Terminal Output

我正在尝试获取存储在mongodb数据库中的图像,以将其检索并呈现到浏览器中。我已经尝试过一些以前的解决方案,例如btoa,window.btoa,但是它都没有定义。
https://stackoverflow.com/questions/6182315/how-to-do-base64-encoding-in-node-js)(https://stackoverflow.com/questions/23097928/node-js-throws-btoa-is-not-defined-error)

我当前的代码如下:

<img src= <%= `data:${event.eventImage.mimetype};base64,` + Buffer.from(`${event.eventImage.file}`, 'binary').toString('base64') %> >


这将导致上面链接中的输出。二进制文件中有很多“ /”,我认为不应该在其中。如何正确转换二进制文件以便渲染图像?

JSFiddle

最佳答案

我最终按照@Brad的建议做。在我看来,我写道:

<img src='http://localhost:3000/public/images/<%=event._id %>' >


然后,我在Nodejs中创建了一个路由来处理/ images /:id。

router.get('/images/:id', function(req,res){
LCEvent.findById(req.params.id)
    .exec()
    .then(doc =>{
        res.send(doc.eventImage.file);
    })
    .catch(err => console.log(err));
})


就我而言,我的文档结构如下


  


{
     eventImage: {
        file: Binary {...},
        filename: 'dreamlifestyle.jpg',
        mimetype: 'image/jpeg'
    }
}

07-24 09:33