问题描述
在我的应用中,用户的个人资料上有一个页面可以上传图像。为了实现这一目标,我制作了一个图像模型,其中包括名称,URL(在磁盘上)和上载图像的缩略词。每次上传图像时,都会创建该Model的实例,该实例会将数据保存到mongo。图像本身将保存到我的项目的文件夹中。为了在用户页面上显示上载的图像,我为每个图像分配了磁盘上的相应路径。而且有效。然后,我还可以从te ui和数据库中删除图像。而且有效。 问题是图像不会从磁盘上删除。
到目前为止,这是我尝试过的方法,在用于删除图像路由的控制器中,我添加了fs.unlink
方法,但是它不起作用。
exports.deletePhoto = (req,res) => {
User.findById(req.params.userid)
.exec((error,user) => {
if (error) {
return res.json(error);
}
Photo.findByIdAndDelete(req.body.photoId)
.exec((error,photo) => {
if (error) {
return res.json(error);
}
**fs.unlink(photo.photo.photoUrl,error => {
if (error) {
console.log(error);
return;
}
});**
user.photos.pull(photo);
user.save();
return res.status(204).json({
message: `Photo successfuly deleted`,photoId: photo._id,photoUrl: photo.photo.photoUrl,});
});
});
};
从数据库删除图像时如何从磁盘删除图像?基本上,当我从UI删除图像时,我也希望将其从磁盘上删除。
Multer配置:
const FILE_PATH = 'uploads';
const storage = multer.diskStorage({
destination: (req,file,cb) => cb(null,FILE_PATH),filename: (req,cb) => {
cb(null,`${Date.Now()}_${file.originalname}`)
},});
const fileFilter = (req,cb) => {
if (!file.filename.match(/\.(jpeg|jpg|png)$/)) {
console.log('Only upload jpg and png files.');
}
cb(undefined,true);
}
router.post('/upload/:userid',multer({ storage }).single('photo'),uploadPhoto);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)