我正在使用fileUploader jQuery插件,我通过回显$ _FILES var来测试它,但是这总是返回空,我得到了fileUploader的失败响应。有什么想法没有提交图像数据吗?
谢谢!
答案 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);
}