2013-07-07 19 views
26

Tôi đã tìm kiếm được Google nhưng không thể tìm thấy câu trả lời nhưng nó phải là một vấn đề phổ biến. Đây là câu hỏi tương tự như Node request (read image stream - pipe back to response), chưa được trả lời.Node Express gửi tệp hình ảnh dưới dạng phản hồi API

Làm cách nào để gửi tệp hình ảnh dưới dạng phản hồi Express .send()? Tôi cần ánh xạ các url RESTful cho các hình ảnh - nhưng làm cách nào để gửi tệp nhị phân với các tiêu đề phải không? Ví dụ:

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

cuộc gọi ...

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

Làm thế nào để bạn lấy phía máy chủ hình ảnh? – 7zark7

+0

Sử dụng request.get – metalaureate

Trả lời

41

Có một api trong 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

thay vì đường dẫn tệp, bạn có thể thực hiện điều đó từ luồng không? ví dụ nếu bạn có một biến mà bạn đang lưu trữ một tệp để bạn không phải thực sự lưu tệp trên máy chủ? – BRogers

+3

@BRogers 'res' là một luồng có thể ghi, vì vậy nếu bạn có một đối tượng' Buffer' hoặc 'string' thì bạn có thể sử dụng phương thức' .write' để gửi nó tới máy khách. –

+0

Cảm ơn bạn, tôi sẽ cố gắng này. Tôi có một bộ đệm CSV mà tôi muốn gửi lại cho khách hàng và nó hiển thị như một tập tin tải về. Tôi sẽ phải chơi với cái đó. Các tập tin không phải là rất lớn, vì vậy tôi hy vọng để thực hiện điều này. – BRogers