繁体   English   中英

JavaScript中的文件切片导致空的Blob

[英]File slicing in JavaScript results in empty blob

我正在实现基于浏览器的分块文件上传器。 要打开文件,我使用<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中观察到这一点。也可以使用其他浏览器。

有什么事吗 我正在考虑的事情:

  • 文件正在使用中
  • 文件/磁盘损坏
  • 同时,JavaScript引擎对blob进行了GC处理-如果是这种情况,如何确保未对它进行GC处理?
  • 浏览器错误(我发现了这个错误,但不确定是否相关: https : //bugs.chromium.org/p/chromium/issues/detail?id=167111

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM