【发布时间】:2021-10-29 04:34:18
【问题描述】:
我目前在显示来自 db 的图像时遇到问题。在我的数据库(Sequelize MySQL)中,我的列看起来像这样。 Database
您可以看到有路径,它显示了服务器上文件的路径。 (快递服务器使用multer上传照片)。
我怎样才能在我的前端显示这个?我正在尝试一切,但我无法找到解决方案。 当我打开我的服务器文件夹并在那里复制文件路径时,我得到这样的路径: Path 当我把它放在 chrome 中时,我可以看到那个图像,但是当我尝试在前端显示它时,我就没有那么幸运了。
这是我在后端获取图像的函数。
async getOneImage (req,res){
try{
const getOneImage = await CaseImage.findOne({ where: {CaseId: req.params.CaseId, id: req.params.id}});
if (getOneImage == null) {
res.status(400).send({ message: 'Prípad so zadaným ID sa nenašiel.' });
}
res.send(getOneImage);
}
catch (err) {
console.log(err);
res.status(400).send({ message: 'Nepodarilo sa načítať fotografie, skúste to neskôr.'});
}
},
也许我应该将该响应更改为二进制或?如您所见,我不太清楚这个主题。
感谢大家的帮助,如果问题的格式或命名不正确,我们深表歉意。
好的,所以我尝试了,现在我向节点服务器发出请求,但我得到响应 404 无法获取...所以我假设问题出在我的快速设置中...
this.imageSrc = http://localhost:3000/${data.path}.png
这是完整的 url.. 但响应是 404。
http://localhost:3000/static/uploads/70e13f7cd5e6a3d0a0d0bc252d62fa31.png
编辑。
所以,这是我的前端.. 你可以看到我正在向正确的路径发送响应。 frontend request
在这里你可以看到我的 express 后端设置是什么样子的。 Express
这是我向后端发送请求时得到的响应。 Response
但我仍然无法在 vue 中看到图像。当我检查时,我只看到空白,在控制台中是这个回复:
“获取 http://localhost:3000/static/uploads/70e13f7cd5e6a3d0a0d0bc252d62fa31.png 404(未找到)”
在网络标签中是这个。 Network tab
【问题讨论】:
-
您能说明如何从您的前端部分调用后端吗?
-
您返回的 json 不是实际图像,您需要通过
<img :src="image.path"/>标签从路径加载图像,或者使用 fs 加载实际图像,然后通过管道等快速发送并发送返回,然后使用<img src="/path/to/the/route"/> -
这是我对后端的调用.. [链接] (pastebin.com/qcPwkmwb).. 现在我可以看到一个大问题并且我请求的数据库错误。当图像不是案例时,我应该请求数据库..
标签: mysql node.js image vue.js express