8

私は現在、バイナリ データで部分的な XHR 応答を読み取る可能性を研究しています。現在のアプローチは、「responseText」プロパティと base64 エンコーディングに基づいています。明らかに、これは最適とはほど遠いものです。

XHR を使用して部分的な Blob/ArrayBuffer 応答を読み取るにはどうすればよいでしょうか? Chrome で試してみると、readyState = 4 のときに ArrayBuffer/Blob 全体が利用可能になりますが、それ以前には利用できません。

要約すると、次のように思われます。

  • XHR の responseText プロパティの読み取り: readyState = 4 の前に応答を読み取ることができ、base64 でエンコードされたバイナリ データをクライアントにストリーミングできます。
  • responseType = 'arraybuffer' での XHR の応答プロパティの読み取り: 部分的な応答の読み取りはありませんが、readyState = 4 の場合はバッファー全体が使用可能になります

ここで何か不足していますか?部分バイナリ応答を読み取るには、どのようなアプローチをとればよいでしょうか?

4

3 に答える 3

5

まだ標準ではありませんが、方法はあります。Firefox ではresponseType、XHR を "moz-blob"、"moz-chunked-text"、または "moz-chunked-arraybuffer" に設定することができます。次に、progressイベントをリッスンすると、受信した部分データにアクセスできるようになります。MDN には、ここここで詳細情報があります。

Chrome はStreams APIをサポートしますが、まだ準備が整っていません。Firefox も最終的にサポートする可能性があります。IE が既に行っていることをどこかで読みましたが、それを確認するための公式ドキュメントが見つからないようです。

于 2013-10-31T02:16:49.393 に答える
5

現在Firefox と Chrome でサポートされている fetch APIに注目してください。

于 2015-12-16T04:37:15.973 に答える