2013-07-07 15 views
26

I Ho cercato su Google ma non è stato possibile trovare una risposta, ma deve essere un problema comune. Questa è la stessa domanda di Node request (read image stream - pipe back to response), che non ha risposta.Node Express che invia file di immagini come risposta API

Come si invia un file immagine come risposta Express .send()? Ho bisogno di mappare gli URL RESTful alle immagini - ma come faccio a inviare il file binario con le intestazioni giuste? Per esempio,

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

chiede ...

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

Come si fa a recuperare l'immagine lato server? – 7zark7

+0

Usando request.get – metalaureate

risposta

41

C'è un api in veloce.

res.sendFile

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

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

+2

invece di un percorso file potresti farlo da uno stream? per esempio se avevi una variabile in cui stavi salvando un file in modo da non dover salvare effettivamente il file sul server? – BRogers

+3

@BRogers 'res' è un flusso scrivibile, quindi se si ha un oggetto' Buffer' o 'stringa', allora si può usare il metodo' .write' per inviarlo al client. –

+0

Grazie, lo proverò. Ho un buffer CSV che voglio inviare al client e viene visualizzato come un file scaricato. Dovrò giocare con quello. Il file non è molto grande, quindi spero di farlo. – BRogers