如何显示来自 Node Js 服务器的图像

Posted

技术标签:

【中文标题】如何显示来自 Node Js 服务器的图像【英文标题】:How to display image from the Nodejs sever 【发布时间】:2022-01-19 20:42:20 【问题描述】:

我在服务器上存储了图像,这些图像通过数据库中的路径存储,我必须显示这些图像我该怎么做


"_id": "61bb82935739a52a55316dc3",
"name": "Egg",
"type": "protein",
"image": "fooduploads\\Egg.png",
"__v": 0

这就是图像在数据库中的存储方式,但是当我必须在前端使用这些图像时如何显示它们。我是必须要开辟新路线还是必须做其他事情

【问题讨论】:

您应该使用server-static 模块提供您的图像。还将您的图片名称添加到您的公共 URL 的末尾。 这能回答你的问题吗? How to serve static profile images in node 您必须为您的图片声明一个静态路径,并且最好将文件的 url 存储在您的数据库中。 【参考方案1】:

你也可以做一个路由,接受 img id,在数据库中查找信息,从文件系统中读取文件并返回图像。

这里有一些 suedo 代码来解释

app.get('/img/:id', (req, res, next) => 
  // Code to talk to the database and get the json
  // getImageInfoFromDatabase(req.params.id)

  const dbResponse = 
    "_id": "61bb82935739a52a55316dc3",
    "name": "Egg",
    "type": "protein",
    "image": "fooduploads\\Egg.png",
     "__v": 0
  
  
  const file = fs.readFileSync(path.join(__dirname, dbResponse.image)

  res.sendFile(file)
)

然后您可以在前端执行:<img src='/img/61bb82935739a52a55316dc3 />

【讨论】:

我已经制定了路线,但出现了问题,因为图像路径中的双反斜杠此字段未在前端打开图像 在服务器上去路由时,看到图片了吗?

以上是关于如何显示来自 Node Js 服务器的图像的主要内容,如果未能解决你的问题,请参考以下文章

(node.js) Windows 8 toast 通知中的次要图像来自哪里?

来自快速服务器的图像的 Angular 5 net::ERR_UNKNOWN_URL_SCHEME

如何将视频(来自 getUserMedia)发送到 Node.js 服务器?

如何将视频(来自 getUserMedia)发送到 Node.js 服务器?

如何使用 ios 应用程序将图像上传到 Node.JS 服务器

服务器可以检查请求是不是来自 iframe (Node.js)?