有没有办法用XMLHttpRequest对象发送二进制数据?

时间:2010-12-07 12:39:04

标签: javascript binary xmlhttprequest send

我正在尝试使用XMLHttpRequest发送二进制块

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

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

xhr.send(bindata);

但这种方法不起作用。我已尝试为 xhr 提供内容类型:应用程序/八位字节流内容编码标头,但它们也无法正常工作。我怀疑没有办法提出这种要求。

我将不胜感激。

4 个答案:

答案 0 :(得分:2)

XMLHttpRequest.sendAsBinary is obsolete. Link

As MDN mentioned, you can directly send binary typed array:

var myArray = new ArrayBuffer(512);
var longInt8View = new Uint8Array(myArray);

// generate some data
for (var i=0; i< longInt8View.length; i++) {
  longInt8View[i] = i % 256;
}

var xhr = new XMLHttpRequest;
xhr.open("POST", url, false);
xhr.send(myArray);

答案 1 :(得分:1)

是的,您可以使用XHR发送二进制数据。您需要做的就是设置适当的头和mime-type,并调用sendAsBinary方法而不是简单的send方法。例如:

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

答案 2 :(得分:1)

W3C已在latest specification中将Blob类型引入XMLHttpRequest。目前我还没有看到任何实现,但在不久的将来,这绝对是使用XMLHttpRequest下载和上传二进制数据的方法。

答案 3 :(得分:0)

“处理二进制数据”部分here描述了如何通过XMLHttpRequest发送和接收二进制数据。