gpt4 book ai didi

javascript - 如何以相同的形式保存req.body和req.file

转载 作者:行者123 更新时间:2023-12-03 01:30:05 26 4
gpt4 key购买 nike

我有一个包含文件输入和文本输入的表单

<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 保存到我的数据库中?

最佳答案

您可以使用对象扩展运算符,如下所示:

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.file 中的文件名将优先于同一字段(如果存在)在req.body

阅读更多相关信息:

关于javascript - 如何以相同的形式保存req.body和req.file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51343170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com