gpt4 book ai didi

node.js - 图像存储在后端文件夹中,但使用 multer 和 react.js 在前端找不到

转载 作者:行者123 更新时间:2023-12-05 05:32:44 29 4
gpt4 key购买 nike

我使用 Multer 创建了一个图像上传 API。该图像也存储在我的文件中并响应图像的路径。但是我无法在浏览器和前端预览这张图片。

我将一张图片保存在我的本地文件夹中,并收到作为图片路径的响应。我把路径保存在MongoDB数据库中,想从数据库中获取图片。

//upload router 

import express from "express";
import multer from "multer";
import path from "path";
import { Request, Response } from "express";
const router = express.Router();

const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "uploads/");
},
filename: function (req, file, cb) {
cb(
null,
`${file.fieldname}-${Date.now()}${path.extname(file.originalname)}`
);
},
});

const upload = multer({ storage: storage });

router.post("/", upload.single("image"), (req: any, res: Response) => {
const imgUrl = req.file.path.replace(/\\/g, "/");
console.log(imgUrl);
res.send(`/${imgUrl}`);
});

export default router;
//server.js
app.use("/api/v1/uploads", imageUpload);
app.use("/uploads", express.static(path.join(__dirname, "/uploads")));
//image input
const uploadImgHandler = async (e: any) => {
const file = e.target.files[0];
const formData = new FormData();
formData.append("image", file);
setUploadingImg(true);

try {
const config = {
headers: {
"Content-Type": "multipart/form-data",
},
};

const { data } = await axios.post(
"http://localhost:5000/api/v1/uploads",
formData,
config
);
console.log("data", data);
setEmployeeImg(data);
setUploadingImg(false);
} catch (error) {
console.error(error);
setUploadingImg(false);
}
};
// input jsx
<input
accept="image/*"
name="image"
id="contained-button-file"
type="file"
style={{ padding: 10 }}
onChange={uploadImgHandler}
/>
//fetch image
<div>
<p>Address: {profile?.address}</p>
<p>Salary: {profile?.salary}</p>
<p>Joinning Date: {profile?.joingDate}</p>
<p>image</p>
<img
src={`http://localhost:5000/api/v1/uploads${profile?.image}`}
alt=""
style={{ height: "10rem", width: "10rem" }}
/>
</div>

图片路径/profile.image 值

enter image description here

浏览器截图 enter image description here

图片保存在我的文件夹中

enter image description here

也许我在某处犯了错误,但找不到。但我认为,静态路径有问题。但是我没有发现任何问题。

在浏览器中,报错如下 enter image description here

最佳答案

你可以试试这个:

   //server.js
const dirname = path.resolve();
app.use('/uploads', express.static(path.join(dirname, '/uploads')));


//fetch image
<div>
<p>Address: {profile?.address}</p>
<p>Salary: {profile?.salary}</p>
<p>Joinning Date: {profile?.joingDate}</p>
<p>image</p>
<img
src={`http://localhost:5000${profile?.image}`}
alt=""
style={{ height: "10rem", width: "10rem" }}
/>
</div>

关于node.js - 图像存储在后端文件夹中,但使用 multer 和 react.js 在前端找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74016266/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com