JavaScript中的文件切片导致空blob

时间:2017-09-05 13:05:12

标签: javascript html5 chunking

我正在实现一个基于浏览器的分块文件上传器。要打开文件我正在使用<input type="file" id="fileSelector" />和这段代码(简化):

$('#fileSelector').on('change', function () {
    _file = evt.target.files[0];
});

我正在将文件切成块,但不是将块读入内存(未明确)。

问题:偶尔(少于0.1%的上传文件)从基础文件中切出的块是空的。例如。在上传大文件的过程中,事情进展顺利,然后在该文件的中间调用:

var _blob = _file.slice(chunk.start, chunk.end, _file.type);

导致空切片(_blob.size为0)。将此blob发送到服务器(.NET 4.6)会导致Request.InputStream为空。我发送的是双边数据:

_xhr.setRequestHeader('content-type', 'application/octet-stream');
_xhr.send(_blob);

我还应该提到,再次调用_file.slice会产生相同的空blob。我可以在Chrome 57,Chrome 60(Win和Mac),Mac Safari 10.1.1和Edge 15中观察到这一点。其他浏览器也是可能的。

有什么不对?我正在考虑的事情:

1 个答案:

答案 0 :(得分:1)

答案结果很简单:当上传的文件消失(重命名,删除)时会发生这种情况。