Fine-Uploader使用'File is empty'错误中止上传

时间:2013-05-15 16:22:15

标签: php fine-uploader

我正在使用非jQuery依赖的FineUploader和PHP示例错误报告脚本来上传文件。打开和恢复分块。所有处理都来自PHP示例脚本,无需任何修改。

在最高约90mb的测试文件上成功运行,但是当尝试上传329mb的文件时,上传开始但随后以“文件为空”错误中止。

我可以从我的chunk文件夹中看到在错误发生之前上传了大约77mb的文件。尝试恢复不起作用,也不增加块目录的大小。

环境:LAMP,Centos 6.3。

post_max_sizeupload_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}

1 个答案:

答案 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>

最后,还要确保为上载的文件提供足够的临时和非临时存储空间。该程序包不会捕获“空间不足”错误。