使用Uploadify和Codeigniter框架

时间:2012-02-09 12:33:15

标签: codeigniter uploadify codeigniter-2

我正在尝试将Uploadify v2.1.4与Codeigniter v2.1一起使用。我知道闪存没有将会话数据发送到控制器的问题,控制器在codeigniter中返回,返回http 302错误而不是上传脚本。

我已经看到了各种解决方案,但它们都适用于旧版本的框架,特别是codeigniter。有没有人找到最新的集成uploadify与CI的解决方案?我可以通过将上传脚本放在CI目录之外来使脚本工作,但我想利用CI函数,因此对我来说这不是一个好的解决方案。

确认我收到的错误消息是“HTTP 302”...即禁止uploadify脚本访问/ a / reports / uploadify

这是jquery

$(document).ready(function() {
  $('#file_upload').uploadify({
    'uploader'  : '/swf/uploadify.swf',
    'script'    : '/a/reports/uploadify',
    'cancelImg' : '/img/cancel.png',
    'folder'    : '/uploads/originals', 
    'auto'      : true,
    'fileExt'   : '*.jpg;*.pdf;*.doc',
    'fileDesc'  : 'jpg, pdf or doc',
    'hideButton': false,
    'removeCompleted':false
  });

任何我的控制器

class Reports extends MY_Controller
{
public function uploadify()
{
    log_message('info','uploadify method being called');

    if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];

    log_message('info', 'File Upload: Temp file created '.$tempFile);
    log_message('info', 'File Upload: Target path for upload '.$targetPath);
    log_message('info', 'File Upload: Target file for upload '.$targetFile);

    $fileTypes  = str_replace('*.','',$_REQUEST['fileext']);
    $fileTypes  = str_replace(';','|',$fileTypes);
    $typesArray = split('\|',$fileTypes);
    $fileParts  = pathinfo($_FILES['Filedata']['name']);

    if (in_array($fileParts['extension'],$typesArray))
    {       
        move_uploaded_file($tempFile,$targetFile);
        echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
    }
    else 
    {
        log_message('error', 'File Upload: Invalid file type uploaded ['.$fileParts['extension'].']');
        echo 'Invalid file type.';
    }
    }
}
}

1 个答案:

答案 0 :(得分:2)

最后,我找到了这个解决方案。不是最好的,但仍然是一个很好的解决方法。

http://ellislab.com/forums/viewthread/150550/