我正在尝试使用XMLHttpRequest发送二进制块
var xhr = new XMLHttpRequest();
var bindata = 0x0f0f;
xhr.open("POST", "binary_reader.php");
xhr.send(bindata);
但这种方法不起作用。我已尝试为 xhr 提供内容类型:应用程序/八位字节流,内容编码标头,但它们也无法正常工作。我怀疑没有办法提出这种要求。
我将不胜感激。
答案 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发送和接收二进制数据。