2

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

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

我可以从我的块文件夹中看到大约 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}
4

1 回答 1

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 权限)。您还可以在每个目录的基础上(为了安全)指定它,如下所示。

<Directory "/var/www/myuploaddir/">
        LimitRequestBody 1073741824
</Directory>

最后,还要确保您有足够的临时和非临时存储空间来存储正在上传的文件。该软件包不会捕获“空间不足”错误。

于 2013-05-16T15:19:01.747 回答