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'
}
}