NodeJs:用Express(Multer)发送图片

时间:2016-05-18 04:36:51

标签: node.js image file express multer

我有这段代码

app.get('/imgs/:id', function(req, res) {
    // Validate that req.params.id is 16 bytes hex string
    // Get the stored image type for this image
    var stream = fs.createReadStream(path.join(UPLOAD_PATH, req.params.id));
    stream.on("readable", function() {
        res.setHeader('Content-Type', "image/jpeg")
        stream.pipe(res)
    })
    stream.on('error', (e) => {
        res.redirect(404, "404")
    })
});

现在的问题是我总是得到错误

  

错误:发送后无法设置标头。

因为我使用了res.setHeader函数。 但是,我不知道如何解决它。假设我想在一个页面中使用,显然res.send()函数很好, <img src="imgs/pic">,然后我必须将此页面请求的标头设置为"image/jpeg",否则浏览器不会知道它是图像,也不会将其显示为一个图像。

那我该怎么办?

1 个答案:

答案 0 :(得分:0)

检查快速回复文档here。试试这段代码

app.get('/imgs/:id', function (req, res) {
    res.sendFile(req.params.id, {root: UPLOAD_PATH, headers: {'Content-Type': 'image/jpeg'}}, function (err) {
        if(err) throw err;
    else  console.log('sent')
    })
})