http://www.html5rocks.com/en/tutorials/file/xhr2/を読んで、 anArrayBuffer
と aの違いを理解しようとしていBlob
ます。
どちらのコンテナもビットで構成されていませんか? したがって、両方のコンテナーをさまざまな方法 (32 ビット チャンク、16 ビット チャンクなど) で見ることはできませんか?
http://www.html5rocks.com/en/tutorials/file/xhr2/を読んで、 anArrayBuffer
と aの違いを理解しようとしていBlob
ます。
どちらのコンテナもビットで構成されていませんか? したがって、両方のコンテナーをさまざまな方法 (32 ビット チャンク、16 ビット チャンクなど) で見ることはできませんか?
概要
(を使用して)書き込み/編集する機能が必要でない限り、おそらくフォーマットが最適です。ArrayBuffer
Blob
詳細
別のhtml5rocks ページからこの質問にたどり着きました。、そして@Bart van Heukelomのコメントが役立つことがわかったので、ここで回答に昇格させたいと思いました。
ArrayBuffer
また、Blob
オブジェクトに固有の役立つリソースも見つけました。要約すると、不変/「生データ」オブジェクトであることに重点が置かれているにもかかわらず、オブジェクトは簡単にBlob
Blob
操作できます。
を比較/対比するArrayBuffer
リソースBlob
:
ArrayBuffer
できます(例: a で)DataView
Blob
は不変です
- ArrayBuffer はメモリ内にあり、操作できます。
- Blob は、ディスク上、キャッシュ メモリ内、およびすぐには利用できないその他の場所にある可能性があります。
ArrayBuffer
型付き配列のようないくつかのアクセス層が必要になりますBlob
OP の URLwindow.URL.createObjectURL
の例に見られるように、のような他の関数に直接渡すことができます。
File
関連するインターフェイスと APIが必要になる場合があります。FileReader
Blob
に対処するArrayBuffer
、またはその逆に変換できます。FileReader
readAsArrayBuffer
て Blob から生成できます(@Darren G に感謝)const arrayBuffer = await blob.arrayBuffer()
new Blob([new Uint8Array(data)]);
jsZip
; との両方を(new JSZip()).loadAsync(...)
受け入れます。 ArrayBuffer
Blob
String/Array of bytes/ArrayBuffer/Uint8Array/Buffer/Blob/Promise
binaryType
プロパティ(「arraybuffer」または「blob」の値を持つことができます) を使用して、「WebSocket 接続を介して受信されるバイナリ データのタイプを制御します」。responseType
プロパティを使用して、 「サーバーからの予期される応答タイプを変更する」 (有効な値には、「arraybuffer」、「blob」、および「document」、「json」、「text」などのその他の値が含まれます)応答プロパティには、ArrayBuffer、Blob、Document、JSON、または文字列として、エンティティ本体が含まれます。
responseType
その他の役立つドキュメント:
この
ArrayBuffer
オブジェクトは、汎用の固定長生バイナリ データ バッファーを表すために使用されます。;の内容を直接操作することはできません。ArrayBuffer
代わりに、型指定された配列オブジェクトのいずれか、またはDataView
特定の形式でバッファーを表すオブジェクトを作成し、それを使用してバッファーの内容を読み書きします。
オブジェクトは、不変の生データ のファイルのような
Blob
オブジェクトを表します。必ずしも JavaScript ネイティブ形式ではないデータを表します。インターフェイスは に基づいており、blob 機能を継承し、ユーザーのシステム上のファイルをサポートするように拡張しています。Blob
File
Blob
ページで説明しています。
ArrayBuffer
ArrayBuffer は、バイナリ データの一般的な固定長コンテナーです。生データの一般化されたバッファが必要な場合、これらは非常に便利ですが、これらの背後にある真の力は、JavaScript 型付き配列を使用して、基になるデータの「ビュー」を作成できることです。実際、単一の ArrayBuffer ソースから複数のビューを作成できます。たとえば、同じデータから既存の 32 ビット整数配列と同じ ArrayBuffer を共有する 8 ビット整数配列を作成できます。基礎となるデータは同じままで、異なる表現を作成するだけです。
BLOB
Blob を直接操作したい場合や、ファイルのバイトを操作する必要がない場合は、xhr.responseType='blob' を使用します。