【发布时间】:2020-08-02 04:14:09
【问题描述】:
我正在尝试获取存储在我的 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') %> >
这会导致上面链接中的输出。二进制文件中有很多我认为不应该存在的“/”。如何正确转换二进制文件以便渲染图像?
【问题讨论】:
-
您可以直接在 img src 属性中使用 base 64 数据,这个答案解释了How to display Base64 images in HTML?
-
@NinoFiliu 我也看过那个页面。我什至将整个 base64 字符串(显示在上面的终端输出链接中)复制并粘贴到 jsfiddle 示例中,但它仍然没有呈现我的图像。 base64 本身的二进制文件有问题,但我不确定出了什么问题......
-
你为什么要这样做?只需从 Node.js 服务器为您的图像提供实际的二进制文件。在您的 HTML 中,引用您的 Node.js 服务器的 URL。增加 33% 的存储开销、内存和 CPU 的额外开销,以实现零收益和所有大小限制,就像你现在做的那样,这太疯狂了。
-
@Brad 我不太确定你的意思。我在 Nodejs 中使用路由,使用 mongoose 从 mongodb 获取文件,然后使用 ejs 将其渲染到视图...我在本地运行这一切,除了数据库在 Mongodb Atlas 上。
-
@Yates 设置一个类似
/images/:id的路由,然后在你的HTML中使用<img src="https://node-server.example.com/images/SOME-ID" />。将 HTML 与图像分离。然后,在您的图像路径中,您可以从数据库中获取图像并将其作为图像提供。
标签: javascript node.js image