2013-07-07 10 views
26

Przeszukałem to, ale nie mogłem znaleźć odpowiedzi, ale musi to być powszechny problem. To jest to samo pytanie co Node request (read image stream - pipe back to response), które pozostaje bez odpowiedzi.Węzeł wysyłania plików graficznych jako odpowiedź API

Jak wysłać plik obrazu jako odpowiedź Express.send()? Muszę zamapować adresy URL RESTful na obrazy - ale jak wysłać plik binarny z odpowiednimi nagłówkami? Np

<img src='/report/378334e22/e33423222' /> 

zwraca ...

app.get('/report/:chart_id/:user_id', function (req, res) { 
    //authenticate user_id, get chart_id obfuscated url 
    //send image binary with correct headers 
}); 
+1

Jak można odzyskać po stronie serwera druku? – 7zark7

+0

Używając request.get – metalaureate

Odpowiedz

41

Istnieje API w Express.

res.sendFile

app.get('/report/:chart_id/:user_id', function (req, res) { 
    // res.sendFile(filepath); 
}); 

http://expressjs.com/en/api.html#res.sendFile

+2

zamiast ścieżki pliku, możesz zrobić to ze strumienia? na przykład, gdybyś miał zmienną, w której przechowywałeś plik, abyś nie musiał faktycznie zapisywać pliku na serwerze? – BRogers

+3

@BRogers 'res' to zapisywalny strumień, więc jeśli masz obiekt' Buffer' lub 'string', możesz użyć metody' .write', aby wysłać ją do klienta. –

+0

Dziękuję, spróbuję tego. Mam bufor CSV, który chcę odesłać do klienta i pokazać jako pobrany plik. Będę musiał się z tym zabawić. Plik nie jest bardzo duży, więc mam nadzieję, że uda mi się to osiągnąć. – BRogers

Powiązane problemy