将二进制保存的图像从mongo流式传输到响应对象

时间:2018-08-13 11:30:55

标签: javascript node.js mongodb mongoose

我有一个包含两个字段的架构-namefilefileBinary类型,而nameString

我使用此架构将图像另存为数据库中的文档

在保存图像时没有出现问题-我不确定以后如何阅读。主要建议是能够使用findOne按文件名搜索文件,然后使用pipe或其他可能可行的解决方案将其流式传输到响应-将图像显示给客户端<img/>标签。我试图将文件转换为base64,然后发送res.send('data:image/png;base64,${file.file}')之类的东西,但运气不佳。 *请注意,由于我在文档中有两个字段(namefile),出于明显的原因,我只需要流file

这是我获取文件的GET请求:

router.get('/:url',(req, res) => {
    const url = req.params.url;
    console.log(url)
    console.log('streaming file')
File.
    findOne({ name:url}, 'file').
    cursor().
    on('data', (doc) => { 
        console.log('doc', doc.file); 
        res.send(doc.file)
    }).
    on('end', () => { console.log('Done!'); });

})

this无济于事,因为它用于流式传输文件,但没有路径。我的文件存储在数据库中

db中已保存文件的图像: enter image description here

0 个答案:

没有答案