【发布时间】:2020-01-09 18:36:46
【问题描述】:
我正在尝试从 express 后端获取图像并将它们显示在 react js 前端。我怎样才能完美地做到这一点?
我试图获取保存在名为“Backup”的后端文件夹中的图像,并在 react js 前端将它们显示给用户。 我已经使用 axios 尝试过这个,但仍然得到一个无效的图像而不是正确的图像。
下面是我在前端的获取请求。
fetchImages = () => {
const imageName = 'garande.png'
const url = `http://localhost:5000/fetchImage/${imageName}`
axios.get(url, {responseType: 'blob'})
.then(res => {
return(
<img src={res.data} alt="trial" />
)
}
}
这就是我在后端 server.js 文件中的内容
app.get('/fetchImage/:file(*)', (req, res) => {
let file = req.params.file;
let fileLocation = path.join('../Backup/images/', file);
//res.send({image: fileLocation});
res.sendFile(`${fileLocation}`)
})
我希望图片会显示在用户页面中。 谢谢。
【问题讨论】:
-
您的 res.data 是 Blob 吗?您收到了吗?
-
我正在接收 blob,但它返回的图像大小小于实际文件大小
-
将您的 blob 转换为文件 var file = new File( res.data, { type: "image/jpeg" } ); var imageUrl = URL.createObjectURL(文件);然后使用这个 imageUrl
-
@tarunkhosla 非常感谢.....它可以工作,但只需要一些我可以处理的简单修改......
标签: javascript node.js reactjs express axios