javascript - Finns det något sätt att skicka binär data med XMLHttpRequest-objektet?


Jag försöker skicka binärt segment med XMLHttpRequest

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

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

xhr.send(bindata);

Men detta tillvägagångssätt fungerar inte. Jag har försökt att tillhandahålla Content-type: application/octet-stream, Content-encoding headers för xhr och de fungerar inte heller. Jag misstänker att det inte finns något sätt att skapa en förfrågan av sådan typ.

Jag skulle uppskatta all hjälp.

Svar #1

XMLHttpRequest.sendAsBinary är föråldrad. Länk

Som MDN nämnde, kan du skicka binär typad array direkt:

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);

Svar #2

Ja, du kan skicka binär data med XHR. Allt du behöver göra är att ställa in lämpliga headers och MIME-typ, och använda metoden sendAsBinary istället för den enkla send-metoden. Till exempel:

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