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