【问题标题】:jQuery File Upload crashing browserjQuery File Upload 浏览器崩溃
【发布时间】:2015-03-19 18:51:54
【问题描述】:

我正在使用jquery-filedrop 和 python/flask 将文件上传到我服务器上的上传文件夹。

但是,每当我选择一个大文件 (~80MB+) 时,浏览器选项卡 (chrome) 就会立即崩溃。

查看the code 和自述文件似乎使用HTML5 FileReader() 来处理文件上传。

如果我通过更改 these lines 来获取文件的一小部分:

reader.onloadend = !opts.beforeSend ? send : function (e) {
      opts.beforeSend(files[fileIndex], fileIndex, function () { send(e); });
};

reader.readAsDataURL(files[fileIndex]);

reader.onloadend = !opts.beforeSend ? send : function (e) {
      opts.beforeSend(files[fileIndex].slice(0, 1048576), fileIndex, function () { send(e); });
};

reader.readAsDataURL(files[fileIndex].slice(0, 1048576));

然后我可以通过只从每个文件上传 1MB 来让它运行而不会出现错误,所以我猜这是读入完整文件时的内存问题。

如何将其设置为遍历文件的小块并分别上传?或者,有没有更好的解决方法?

【问题讨论】:

标签: javascript jquery python html jquery-plugins


【解决方案1】:

是的,如果您使用重物运行循环,Chrome 会崩溃。您可以做的最好的事情是使用 Webworkers 来处理文件,然后读取卡盘。

资源

【讨论】:

    【解决方案2】:

    如果使用 HTML5 FileReader(),则 file 选项有一个您可以使用的 slice 方法。

    var blob = file.slice(startingByte, endindByte); reader.readAsBinaryString(blob);

    欲了解更多信息:http://www.html5rocks.com/en/tutorials/file/dndfiles/

    【讨论】:

    • 谢谢,但是在我给出的示例中,我使用 slice 来读取文件的样本,我想知道是否可以让 jquery-filedrop 逐个读取文件并上传每个切片,然后重新组合它们。我以前使用过一个基本的文件输入表单,它似乎适用于大文件,但由于某种原因,它崩溃了。
    猜你喜欢
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2013-10-24
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多