我尝试使用以下(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');
答案 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