2016-04-27 8 views
0

Ich erstelle ein Array-Puffer einige Daten enthalten:Senden Binärdaten Server

var myArray = new ArrayBuffer(512); 
var longInt8View = new Uint8Array(myArray); 
for (var i = 0; i < longInt8View.length; i++) { 
    longInt8View[i] = i % 255; 
} 

Und ich senden Sie es so ein Server via POST:

if (window.XMLHttpRequest) { 
    var xmlhttp = new XMLHttpRequest(); 
} else { 
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { 
     action(xmlhttp.responseText); 
    } 
}; 
xmlhttp.open("POST", 'http://somedomain.com:8080', true); 
xmlhttp.send(myArray); 
var action = function (response) { 
    console.log(response); 
}; 

ich jetzt diese binären Daten erhalten möchten in geh Code und tu etwas damit. Wie kann ich das machen?

Ich kann einen Verweis auf einen Speicherblock im Körper sehen, aber wie bekomme ich das genau?

+0

der Anfrage Körper ist ein [ 'io.Reader'] (https://golang.org/pkg/io/#Reader) verwenden, können Sie lies daraus. (eigentlich ist es ein 'io.ReadCloser', aber Sie müssen es nicht auf dem Server schließen) – JimB

Antwort

0

Keine Binärdaten über HTTP-Protokoll senden. Konvertieren Sie sie in Base64. Senden Sie sie als normale Zeichenfolge. Dekodieren Sie sie von Base64 zu binär auf der Serverseite.

in eine binäre Daten zu Base64 konvertieren Sie die Funktion btoa

+1

Warum nicht binäre Daten? – khernik

+0

Sie haben den Inhaltstyp als text/plain definiert. Ein Proxy konnte Ihre Anfrage zerstören und den Inhalt als beschädigte Daten erkennen. –

Verwandte Themen