jQuery文件上传崩溃的浏览器

时间:2015-03-19 18:51:55

标签: javascript jquery python html5 jquery-plugins

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

但是每当我选择一个大文件(~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来让它运行而没有错误,因此我猜测在读入完整文件时这是一个内存问题。

我怎样才能将其设置为遍历文件的小块并单独上传?或者,有没有更好的解决方法?

2 个答案:

答案 0 :(得分:1)

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

资源

答案 1 :(得分:0)

如果使用HTML5 FileReader(),则file选项可以使用slice方法。

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

有关详细信息:http://www.html5rocks.com/en/tutorials/file/dndfiles/