2012-12-19 8 views
5

Ho un'immagine su un server web (http://example.com/img.jpg). Apro quell'immagine in un browser e la salviamo sul disco.Come si legge un file binario tramite HTTP nel nodo?

Se apro il file nel nodo tramite il modulo "fs" (fs.readFileSync), ricevo un buffer che inizia con 0xff, che è quello che mi aspetterei.

Mi piacerebbe essere in grado di ottenere lo stesso risultato direttamente da una richiesta HTTP. Sto usando il modulo 'richiesta' per effettuare la richiesta.

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

io non riesco a capire come trasformare la risposta o corpo in un buffer equivalente da quello che sto ricevendo dal filesystem. Cosa mi manca?

risposta

5

È possibile ottenere un Buffer impostando il encoding a null:

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

request tratta qualsiasi altro valore as an argument per buffer.toString(), che per default undefined a "utf8".

Problemi correlati