【问题标题】:jQuery-File-Upload plugin resetting at 2.1GBjQuery-File-Upload 插件重置为 2.1GB
【发布时间】:2012-11-18 22:07:15
【问题描述】:

我正在尝试使用 jQuery-File-Upload 插件为大文件实现简单的分块文件上传。我将 GitHub-repo 克隆到一个文件夹中,并将我的 main.js 更改为以下内容:

$('#fileupload').fileupload({
    maxChunkSize: 10000000,
    add: function (e, data) {
        var that = this;
        $.getJSON('server/php/', {file: data.files[0].name}, function (file) {
            data.uploadedBytes = file && file.size;
            $.blueimp.fileupload.prototype.options.add.call(that, e, data);
        });
    }
});

如文档中所述。这适用于最大 2GB 的文件(我可以在控制台和服务器上看到分块),但是当我尝试上传大于 2.1GB 的文件时,会发生以下情况:最后一块数据将正确附加到现有文件myUpload.file,然后脚本将开始编写一个新文件myUpload.file (1),从头开始,客户端和服务器端都不会抛出错误。当第二个文件达到 2.1GB 的大小时,也会发生同样的情况。文件的进度计数器将被重置,而整体进度计数器将溢出并告诉我已完成 142%(并且还在计数)。

我在服务器端运行 PHP 5.3.5。

我已经尝试摆弄max_post_sizeupload_max_file_sizememory_limit 的设置,如插件的 FAQthis question 中所述但没有任何成功。我还在 GitHub 上找到了 this issue,听起来很相似,但没有任何实际输入就关闭了。

除了摆弄php.ini 设置之外,我完全不知道该怎么做。

【问题讨论】:

    标签: php jquery jquery-plugins file-upload


    【解决方案1】:

    检查服务器操作系统和文件系统是否支持大文件。非常旧的 32 位系统存在 2GB 及以上的问题。另外我怀疑 32 位框架可能将内部计数器定义为 32 位有符号整数。

    这只是计算机基础知识的简单猜测,但值得一试

    编辑:这就是你要找的4GB HTTP File Uploads Using jQuery-File-Upload, Apache and PHP

    【讨论】:

    • 我不确定 PHP 的限制,但我的操作系统(Windows 和 Linux)支持这种大小的文件。由于文件的分块,上传/传输限制应该没有问题(这似乎工作得很好)。
    • 块大小不是问题(根据您之前的描述),但是当文件大小增长超过 2 GB (2^31) 时,就会出现问题。我就是这么看的。从逻辑上讲,它指向一些 32 位问题。您为什么不编写一个示例 php 页面来测试文件大小限制并观察(内部和您的代码)php 变量。试一试吧! ... 在做任何其他事情之前先转储内部 php 变量
    • 听起来很合理,我也刚刚发现:www.php.net/manual/en/features.file-upload.common-pitfalls.php#44626 我想我会写一个简单的测试接下来只是整理这些东西。非常感谢您的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多