我使用非依赖于jQuery的FineUploader和PHP示例错误报告脚本来上传文件。分块和恢复处于打开状态。所有处理都来自PHP示例脚本,没有任何修改。
成功处理最大为~90mb的测试文件,但是,当尝试上载329mb的文件时,上载开始,但随后中止,并出现“file is empty”错误。
我可以从我的chunk文件夹中看到,大约77mb的文件是在错误发生之前上传的。尝试恢复不起作用,并且不会增加区块目录的大小。
环境: LAMP,Centos 6.3。
在php.ini中,post_max_size和upload_max_filesize都设置为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}发布于 2013-05-16 23:19:02
如果你正在经历这个(相当无用的)错误,它可能有很多东西,所以我建议你全部检查它们。这个答案是在“非常大的”文件的上下文中出现的,其中似乎出现了这个错误。
在您的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文件中直接指定(假设您具有覆盖权限)。您也可以在每个目录的基础上指定它(为了安全),如下所示。
<Directory "/var/www/myuploaddir/">
LimitRequestBody 1073741824
</Directory>最后,还要确保您有足够的临时和非临时存储来存储要上载的文件。该包不能捕获“空间不足”错误。
https://stackoverflow.com/questions/16570246
复制相似问题