我正在使用非jQuery依赖的FineUploader和PHP示例错误报告脚本来上传文件。打开和恢复分块。所有处理都来自PHP示例脚本,无需任何修改。
在最高约90mb的测试文件上成功运行,但是当尝试上传329mb的文件时,上传开始但随后以“文件为空”错误中止。
我可以从我的chunk文件夹中看到在错误发生之前上传了大约77mb的文件。尝试恢复不起作用,也不增加块目录的大小。
环境:LAMP,Centos 6.3。
post_max_size
和upload_max_filesize
都在php.ini中设置为2048M。
是否有任何迹象表明原因?很高兴提供更多信息。
上传代码:
<div id="failed-fine-uploader"></div>
<script>
function createUploader() {
var faileduploader = new qq.FineUploader({
element: document.getElementById('failed-fine-uploader'),
request: {
endpoint: 'example.php'
},
chunking: {
enabled: true
},
resume: {
enabled: true
},
failedUploadTextDisplay: {
mode: 'custom',
maxChars: 40,
responseProperty: 'error',
enableTooltip: true
}
});
}
window.onload = createUploader;
</script>
编辑:控制台信息:
[17:31:09.314] [FineUploader] Processing 1 files or inputs...
[17:31:09.315] [FineUploader] Resuming CentOS-6.3-x86_64-minimal.iso at partition index 40
[17:31:09.316] [FineUploader] Sending chunked upload request for item 4: bytes 80000001-82000000 of 346011648
[17:31:09.504] [FineUploader] xhr - server response received for 4
[17:31:09.504] [FineUploader] responseText = {"error":"File is empty.","uploadName":null}
答案 0 :(得分:2)
如果你遇到这个(相当无益的)错误,那可能是很多事情,所以我建议你检查一下。这个答案是在“非常大”的文件的上下文中,这个错误似乎发生了。
在你的php.ini中,检查以确保:
post_max_size
设置得足够高,可以覆盖文件大小(最大2G)
upload_max_filesize
设置得足够高,可以覆盖文件大小(最大2G)
post_max_size
大于upload_max_filesize
(按http://www.php.net/manual/en/ini.core.php#ini.post-max-size的建议),且memory_limit
大于post_max_size
。任何这些因素都可能导致$_FILES
超级全局返回为空,并导致错误上传。
在php.ini中尝试的其他事项:
增加max_execution_time
以考虑上传的持续时间(大文件通常需要超过30的默认值),max_input_time
也相应增加。
您可能还需要使用LimitRequestBody
指令修改httpd.conf,因为这可能会覆盖php.ini中指定的任何内容。这是以字节为单位指定的,可以直接在httpd.conf或.htaccess文件中指定(假设您有Override priviliges)。您还可以在每个目录(为安全性)的基础上指定此项,如下所示。
<Directory "/var/www/myuploaddir/">
LimitRequestBody 1073741824
</Directory>
最后,还要确保为上载的文件提供足够的临时和非临时存储空间。该程序包不会捕获“空间不足”错误。