无法构造'Blob':数组长度超出支持的限制

时间:2017-06-30 04:35:46

标签: javascript

我尝试使用以下(Chrome浏览器)构建一个简单的10.5mb Blob

var arr = new Uint8Array(10485833);
var blob = new Blob(arr, { type: 'application/octet-stream' });

我收到错误:

  

未捕获的RangeError:无法构造“Blob”:数组长度超出支持的限制。

限制是什么?为什么我不能创建一个10mb blob?如果我想创建一个50mb blob怎么办? 1gb blob?

Blob这里使用的数据类型是否错误?最后,我尝试构建一些FormData以发布到服务器。例如:

var fd = new FormData();
var blob = new Blob(arr, { type: 'application/octet-stream' });
fd.append('data', blob, 'filename.zip');

1 个答案:

答案 0 :(得分:4)

这是因为Blob需要一组数据块。 你传递的数组太大了。 (Probably related

解决方案只是将此数组包装在一个长度数组中。

var arr = new Uint8Array(10485833);
console.log(new Blob([ arr ], {type:'application/octet-stream'}))
//                   ^_____^_____ wrapped in a single lengthed Array