删除包含映像的数据结构时如何从磁盘删除映像?

问题描述

在我的应用中,用户的个人资料上有一个页面可以上传图像。为了实现这一目标,我制作了一个图像模型,其中包括名称,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 (将#修改为@)