【发布时间】:2020-10-28 23:05:59
【问题描述】:
所以我一直在尝试让 multer 将图像数据保存在磁盘上,并将图像 mimetypes、名称和路径保存到 Mongo 磁盘上的文件夹。我现在的样子是这样的:
Multer 设置:
const storage = multer.diskStorage({
destination: (req, file, cb) => cb(null, '/public/images/uploads'),
filename: (req, file, cb) => {
cb(null, Date.now() + '-' + file.originalname)
},
});
const upload = multer({
storage,
fileFilter (req, file, cb) {
if (!file.originalname.match(/\.(jpeg\jpg\png)$/)) {
cb(new Error('Only upload jpg and png files.'));
}
cb(undefined, true);
}
});
上传图片的路径:
router.post('/upload/:userid', upload.single('photo'), uploadPhoto);
然后这个位从控制器到Mongo上保存图片细节:
const newPhoto = new Photo({
photo: {
mimetype,
photoUrl: `images/uploads/${name}`,
name,
},
});
axios 对“上传”端点的调用:
await axios.post(
`${baseUrl}/api/photo/upload/${JSON.parse(localStorage.getItem('loggedUser'))._id}`,
formData,
{ headers: {
'Content-Type': 'multipart/form-data'
}},
).then(response => setPhotoUrls([response.data.photoUrl, ...photoUrls]));
所以后端部分工作正常,因为它将所需的数据保存在 Mongo 上,但图像仍然没有保存在磁盘上。如何让 multer 将选定的图像保存在磁盘上?
【问题讨论】:
标签: reactjs mongodb express multer