首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取存储在mongodb中的图片并在nodejs中显示

问如何读取存储在mongodb中的图片并在nodejs中显示
EN

Stack Overflow用户
提问于 2020-07-18 01:25:02
回答 2查看 264关注 0票数 0

我正在做一个nodejs应用程序,它显示存储在服务器上的图片,我使用multer将图片存储在同一目录中,我使用mongodb作为我的数据库来存储用户上传的图片的路径,然后我读取路径并显示图片,如下所示,

代码语言:javascript
复制
<div class="post-image flex">
        <%var imagesource='../'+postobj.blob.path%>
        <div>
            <img class='onbottomimage' src="<%=imagesource%>" >
        </div>
</div>

一切都在本地运行得很好。但现在我已经将我的应用程序部署到heroku上,并发现我不能在heroku上存储图片,因为用户上传它们,我仍然将图片存储在mongodb中,格式为Base64,如下所示

代码语言:javascript
复制
image
:
Binary('/9j/4AAQSkZJRgABAgEAYABgAAD/7gAOQWRvYmUAZAAAAAAB/+EUI0V4aWYAAE1NACoAAAAIAAcBMgACAAAAFAAAAGIBOwACAAAA...', 0)

我如何将它们转换回图片并在ejs中的img标签中显示它们,或者我有哪些其他选项,我不想更改heroku,但仍然可以显示用户上传的图片。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-18 02:13:34

如果你将上传的图片存储在Heroku服务器上,这是一种彻底的浪费。因为Heroku Dyno每天都会重启,这将删除除部署期间存储的数据以外的所有额外添加的数据。我认为您使用的是express。

代码语言:javascript
复制
let fs=require("fs")
let yourBuffer=//retrieve that buffer and store into this(yourBuffer) variable
let buffer = new Buffer.from(yourBuffer)
fs.writeFile(`location to storeimage/imagename.yourimageextension`, buffer, "binary", function (err, written) {
    if (err) console.log(err);
    else {
        console.log("Successfully written");
        res.sendFile((__dirname + `location of image/imagename.yourimageextension`))
    }
});
票数 1
EN

Stack Overflow用户

发布于 2020-07-18 01:32:53

我认为更好的解决方案是使用第三方存储提供商,例如aws s3,并且只在数据库中存储图像url。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62958963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档