2012-12-19 14 views
5

Ich habe ein Bild auf einem Webserver (http://example.com/img.jpg). Ich öffne das Bild in einem Browser und speichere es auf der Festplatte.Wie lese ich eine Binärdatei über HTTP im Knoten?

Wenn ich die Datei im Knoten über das Modul 'fs' (fs.readFileSync) öffne, bekomme ich einen Puffer, der mit 0xff beginnt, was ich erwarten würde.

Ich möchte in der Lage sein, das gleiche Ergebnis direkt von einer HTTP-Anfrage zu erhalten. Ich benutze das Modul 'Anfrage', um die Anfrage zu stellen.

request('http://example.com/img.jpg',function(error, response, body){ 
    //code here 
}); 

Ich kann nicht herausfinden, wie die Antwort oder Körper in einen entsprechenden Puffer machen von dem, was ich aus dem Dateisystem zu bekommen. Was vermisse ich?

Antwort

5

Sie können eine Buffer erhalten, indem die encoding zu null:

request('http://example.com/img.jpg', { encoding: null }, function(error, response, body){ 
    console.log(Buffer.isBuffer(body)); // true 
}); 

request behandelt einen anderen Wert as an argument für buffer.toString(), die standardmäßig undefined zu "utf8".

Verwandte Themen