qq.FileUploader不传递任何$ _FILES数据

时间:2011-05-24 17:48:14

标签: jquery file-upload

我正在使用fileUploader jQuery插件,我通过回显$ _FILES var来测试它,但是这总是返回空,我得到了fileUploader的失败响应。有什么想法没有提交图像数据吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

大多数服务器阻止第三方脚本,例如http://valums.com/ajax-upload/ ..为了绕过这个,你需要将这些行添加到你的.htaccess文件

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

答案 1 :(得分:0)

qqFileUPload尝试使用字节流发送文件数据,而不是普通的POST。 PHP仅将已发布的文件放入$ _FILES数组中。

幸运的是,qqFileUploader附带了一个类,可以抓取特殊上传并将其保存到文件中:https://github.com/valums/file-uploader/blob/master/server/php.php

祝你好运!

PS。我在Symfony上使用这个上传器,它希望在$ _FILES数组中提供PHP noramlly格式的FILE数组。所以我不得不将文件保存到磁盘,并创建一个symfony表单可以接受的假数组条目。这是使用下面的代码(以及我上面链接的类)完成的:

if ($filename = $request->getParameter('qqfile', false)) {
    // XMLHttpRequest stream'd upload

    $xhrUpload = new qqUploadedFileXhr();
    $tmp_name = 'tmp_creative_'.microtime(true);
    $tmp_file = sfConfig::get('sf_upload_dir').'/'.$tmp_name;
    $xhrUpload->save($tmp_file);
    list($width, $height, $type) = getimagesize($tmp_file);
    $file = array(
      'type' => $type,
      'size' => $xhrUpload->getSize(),
      'name' => $filename,
      'tmp_name' => $tmp_file
    );
} elseif (count($_FILES)) {
    // Normal file upload
    $file = array_shift($_FILES);
} else {
    throw new Exception("Did not receive uploaded file.");
}

$form->bind(array(), $file);

if($filename) 
{
  // If we saved the file manually, php won't consider it a tmp
  // file and we need to delete it ourselves. 
  unlink($tmp_file);
}