Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Senden und Empfangen von Binärdaten
Empfangen von Binärdaten
Die EigenschaftresponseType desXMLHttpRequest-Objekts kann gesetzt werden, um den erwarteten Antworttyp vom Server zu ändern. Mögliche Werte sind der leere String (Standard),"arraybuffer","blob","document","json" und"text". Die Eigenschaftresponse enthält den Entitätskörper entsprechendresponseType, alsArrayBuffer,Blob,Document,JSON oder String. Dies istnull, wenn die Anfrage nicht abgeschlossen oder nicht erfolgreich war.
In diesem Beispiel wird ein Bild als Binärdatei gelesen und ein 8-Bit-Unsigned-Integer-Array aus den Rohbytes erstellt. Beachten Sie, dass hierbei das Bild nicht dekodiert und die Pixel nicht gelesen werden. Dies kann mit demImageDecoder-Interface erfolgen.
const req = new XMLHttpRequest();req.open("GET", "/myfile.png", true);req.responseType = "arraybuffer";req.onload = (event) => { const arrayBuffer = req.response; // Note: not req.responseText if (arrayBuffer) { const byteArray = new Uint8Array(arrayBuffer); byteArray.forEach((element, index) => { // do something with each byte in the array }); }};req.send(null);Sie können eine Binärdatei auch alsBlob lesen, indem Sie die Zeichenkette"blob" auf die EigenschaftresponseType setzen.
const req = new XMLHttpRequest();req.open("GET", "/myfile.png", true);req.responseType = "blob";req.onload = (event) => { const blob = req.response; // …};req.send();In diesem Artikel
Senden von Binärdaten
Diesend-Methode desXMLHttpRequest wurde erweitert, um die einfache Übertragung von Binärdaten zu ermöglichen, indem sie einArrayBuffer,Blob oderFile-Objekt akzeptiert.
Das folgende Beispiel erstellt eine Textdatei "on-the-fly" und verwendet diePOST-Methode, um die "Datei" an den Server zu senden. Dieses Beispiel verwendet Klartext, aber Sie können sich vorstellen, dass die Daten stattdessen eine Binärdatei sind.
const req = new XMLHttpRequest();req.open("POST", url, true);req.onload = (event) => { // Uploaded};const blob = new Blob(["abc123"], { type: "text/plain" });req.send(blob);Senden von typisierten Arrays als Binärdaten
Sie können auch JavaScript-Typ-Arrays als Binärdaten senden.
// Create a new array with fake data (Consecutive numbers (0 - 255), looping back to 0)const array = new Uint8Array(512).map((v, i) => i);const xhr = new XMLHttpRequest();xhr.open("POST", url, false);xhr.send(array);Dies erstellt ein 512-Byte-Array von 8-Bit-Integern und sendet es; selbstverständlich können Sie beliebige Binärdaten verwenden.
Absenden von Formularen und Hochladen von Dateien
SieheFormData.