Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js mongoose删除先前上载的文件_Node.js_Mongoose_File Upload - Fatal编程技术网

Node.js mongoose删除先前上载的文件

Node.js mongoose删除先前上载的文件,node.js,mongoose,file-upload,Node.js,Mongoose,File Upload,我使用multer从客户端上传文件,使用的表单工作得非常好。我还实现了editRouter来编辑帖子内容。因此,如果我上传编辑表单中的文件,该文件也会被上传,帖子也会被更新。但是,上一个文件仍保留在服务器上。删除帖子时也存在类似问题。在这种情况下,如何确保先前上传的文件也被删除 postRouter.js postRouter.route('/:postId/edit') .put(authenticate.verifyUser, upload.single('image'), (req, re

我使用multer从客户端上传文件,使用的表单工作得非常好。我还实现了editRouter来编辑帖子内容。因此,如果我上传编辑表单中的文件,该文件也会被上传,帖子也会被更新。但是,上一个文件仍保留在服务器上。删除帖子时也存在类似问题。在这种情况下,如何确保先前上传的文件也被删除

postRouter.js

postRouter.route('/:postId/edit')
.put(authenticate.verifyUser, upload.single('image'), (req, res, next) => {
    if(req.file)
    {
        req.body.image = req.file.filename;
    }

    Posts.findByIdAndUpdate(req.params.postId, { $set: req.body }, {new: true})
    .then((post) => {
        console.log('The post has been edited successfully');
        res.statusCode = 200;
        res.setHeader('Content-Type','text/html');
        res.redirect('/post/'+post._id+'/view');
    }, (err) => next(err))
    .catch((err) => next(err));
});

postRouter.route('/:postId/view')
.delete(authenticate.verifyUser, (req,res,next) => {
    Posts.findByIdAndRemove(req.params.postId)
    .then((resp) => {
        console.log('Post with id: '+req.params.id+' removed!');
        res.statusCode = 200;
        res.setHeader('Content-Type','text/html');
        res.redirect('/');
    }, (err)=>next(err))
    .catch((err) => next(err));
});
请帮忙! 谢谢

您可以使用节点fs提供的方法在保存新文件之前删除文件

通过使用这种方法,您需要确保您正在删除您想要删除的文件,因为验证将非常有效

fs.unlink('path/file.txt', (err) => {
  if (err) throw err;
  console.log('path/file.txt was deleted');
});
我建议你根据一些唯一的id命名你的
文件
,可以是mongoose的
\u id
PostID
,这样你很可能会删除正确的文件

如果您需要有关如何使用multer重命名文件的帮助,请选中此项