Node.js mongoose删除先前上载的文件
我使用multer从客户端上传文件,使用的表单工作得非常好。我还实现了editRouter来编辑帖子内容。因此,如果我上传编辑表单中的文件,该文件也会被上传,帖子也会被更新。但是,上一个文件仍保留在服务器上。删除帖子时也存在类似问题。在这种情况下,如何确保先前上传的文件也被删除 postRouter.jsNode.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
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重命名文件的帮助,请选中此项