php - Fine-Uploader 中止上传并出现 'File is empty' 错误

标签 php fine-uploader

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

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

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

环境: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}

最佳答案

如果您遇到这个(相当无用的)错误,可能是由多种原因造成的,所以我建议您全部检查一下。这个答案是在似乎发生此错误的“非常大”文件的上下文中。

在您的 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>

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

关于php - Fine-Uploader 中止上传并出现 'File is empty' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16570246/

相关文章:

php - 使用 prepare 命令更新我的表,将值增加 2

javascript - 精细上传者: Initial File List not working

javascript - FineUploader绘制缩略图错误

jquery - 精细 uploader : add upload buttons in template markup

php - 如何获取通过 drupal hook_menu 发送的多个参数

php - MYSQL 我可以更改如何动态限制结果吗?

php - 自定义 phpcs 规则集不遵守排除模式声明

azure - 精细 uploader 从 MVC 端点获取参数

javascript - AngularJS - 单元测试时无法在脚本标记中找到指令模板

php - 查询 MySQL 数据库以显示选定行和所有行