2010-12-07 34 views
0

我'嘗試發送二進制塊使用XMLHttpRequest有什麼辦法可以用XMLHttpRequest對象發送二進制數據嗎?

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

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

xhr.send(bindata); 

但這種方法不能工作。我試圖提供內容類型:應用程序/八位字節流,內容編碼標題爲xhr並且它們也不起作用。我懷疑沒有辦法編寫這種請求。

我將不勝感激任何幫助。

+1

你想用這種方式發送文件嗎?在level 2規範中有一些允許blob發送的更改,這取決於您正在嘗試執行的操作:http://www.w3.org/TR/XMLHttpRequest2/#the-send-method – 2010-12-07 12:41:30

+0

不,這個不是一個文件。這是一個應該在服務器上發送的編碼數據包。服務器反過來以類似結構的包進行響應。我知道我可以做任何一種方式,並且在發送/接收完成base64時編碼/解碼數據包,但是我嘗試通過webapp「實時性」節省CPU時間和數據包大小的開銷。 – duganets 2010-12-07 13:15:41

回答

1

是的,您可以使用XHR發送二進制數據。您只需設置適當的頭文件和MIME類型,然後調用sendAsBinary方法而不是簡單的發送方法。例如:

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

W3C已經引入斑點類型的XMLHttpRequest在latest specification。目前我還沒有看到任何實現,但在不久的將來,這絕對是用XMLHttpRequest下載和上傳二進制數據的方式。

0

「處理二進制數據」部分here描述瞭如何通過XMLHttpRequest發送和接收二進制數據。

相關問題