2017-06-30 11 views
1

を超えて、私は、次の(Chromeブラウザ)を使用して簡単な10.5メガバイトBlobを構築しよう:は、「ブロブ」を構築するために失敗しました:配列の長さがサポートされる制限

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

私はエラーを取得する:

Uncaught RangeError: Failed to construct 'Blob': Array length exceeds supported limit.

制限はありますか?なぜ10MBのブロブを作成できないのですか?もし私が50MBのブロブを作りたければ? 1GBのブロブ?

Blobここで間違ったデータ型が使用されていますか?最後に私はサーバーに投稿するためにFormDataを構築しようとしています。例:

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

答えて

2

これは、BLOBがチャンクの配列を必要とするためです。 渡している配列が大きすぎます。 (Probably related

解決策は、この配列を単一の長さの配列にラップすることです。

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

関連する問題