2012-12-19 19 views
5

Mam obraz na serwerze sieciowym (http://example.com/img.jpg). Otwieram ten obraz w przeglądarce i zapisuję go na dysku.Jak odczytać plik binarny za pośrednictwem protokołu HTTP w węźle?

Jeśli otworzę plik w węźle za pomocą modułu "fs" (fs.readFileSync), otrzymam bufor, który zaczyna się od 0xff, co jest tym, czego oczekiwałbym.

Chciałbym móc uzyskać ten sam wynik bezpośrednio z żądania HTTP. Używam modułu "request" do złożenia wniosku.

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

Nie mogę wymyślić, jak zmienić odpowiedź lub ciało w równoważny bufor z tego, co otrzymuję z FileSystem. czego mi brakuje?

Odpowiedz

5

Można uzyskać Buffer ustawiając encoding do null:

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

request traktuje Każda inna wartość as an argument dla buffer.toString(), domyślnie undefined do "utf8".

Powiązane problemy