2010-12-07 15 views
0

XMLHttpRequestでバイナリチャンクを送信しようとしています。XMLHttpRequestオブジェクトでバイナリデータを送信する方法はありますか?

var xhr = new XMLHttpRequest(); 
var bindata = 0x0f0f; 

xhr.open("POST", "binary_reader.php"); 

xhr.send(bindata); 

しかし、この方法は機能しません。私はコンテンツタイプを提供しようとしました:application/octet-stream xhrのコンテンツエンコーディングヘッダー。私はそのような種類の要求を構成する方法がないと思われます。

私は助けていただければ幸いです。

+1

このようにファイルを送信しようとしていますか?レベル2の仕様には、BLOBの送信を許可するいくつかの変更がありますが、これはあなたが何をしようとしているのかによって異なります。http://www.w3.org/TR/XMLHttpRequest2/#the-send-method –

+0

いいえ、これはファイルではありません。これはサーバー上で送信されるはずの符号化されたパケットです。サーバは、順番に、同様の構造のパケットで応答します。私は、Base64で送受信しているときにどちらの方法でもパケットをエンコード/デコードできることを理解していますが、webapp "realtimeness"のためにCPU時間とパケットサイズのオーバーヘッドを節約しようとしています。 – duganets

答えて

1

はい、XHRを使用してバイナリデータを送信できます。適切なヘッダーとMIMEタイプを設定し、単純なsendメソッドの代わりにsendAsBinaryメソッドを呼び出すだけです。例えば:

+3

注:Firefox 3.5以降でのみ動作します –

1
var req = new XMLHttpRequest(); 
req.open("POST", url, true); 
// set headers and mime-type appropriately 
req.setRequestHeader("Content-Length", 741); 
req.sendAsBinary(aBody); 

W3Cはlatest specification内のXMLHttpRequestにBLOB型を導入しました。現在のところ、これまでの実装は見ていませんが、近い将来、XMLHttpRequestを使用してバイナリデータをダウンロードしてアップロードする方法は間違いありません。

0

「バイナリデータの処理」の節「here」では、XMLHttpRequestを使用してバイナリデータを送受信する方法について説明しています。

関連する問題