我的表单具有文件输入和文本输入
<form action ='/admin-panel' method='post' enctype="multipart/form-data">
<input type='text' name='title'/>
<textarea name='content'></textarea>
<input type="file" name="picture">
<button type="submit">Submit</button>
我可以将标题和内容字段保存在mongoDB中,也可以将文件保存在目标/uploads
这是代码:
app.post('/admin-panel',upload.single('picture'),function(req,res){
db.collection('articles').save(req.body,function (err,result){
if(err){return console.log(err)}
else{
console.log(req.file.filename) // form files
console.log(req.body.title) // form files
res.redirect('/admin-panel');
}
});
})
问题是如何将req.file.filename保存到我的数据库中?
答案 0 :(得分:1)
您可以使用对象展开运算符,如下所示:
app.post('/admin-panel',upload.single('picture'),function(req,res){
db.collection('articles').save({filename:req.file.filename,...req.body},function (err,result){
if(err){return console.log(err)}
else{
console.log(req.file.filename) // form files
console.log(req.body.title) // form files
res.redirect('/admin-panel');
}
});
})
请参见({filename:req.file.filename,...req.body})
,它将为您提供一个包含文件名和req.body
中所有属性的对象。
仅出于安全性建议,请确保用户在正文中发送了什么,他们可能会覆盖请求正文中的req.file.filename。因此,我的建议是将其更改为:({...req.body,req.file.filename})
,这样,如果req.body
中的文件名优先于req.file的相同字段
详细了解它: