在我的项目中,管理员可以上传 MP3 文件并向其提交参数,例如歌曲名称。
我决定使用 multer middleware用于处理 multipart/form-data
。
我的问题是 req.body.gender
总是返回未定义的,因为我必须在 uploadSong
监听器中使用它。我想在性别为零时上传这首歌。
index.ejs
<form method="post" action="/acp" role="publish" enctype="multipart/form-data">
<div class="form-group">
<input type="file" name="song" id="song" accept="audio/mpeg">
</div>
<input type="checkbox" name="gender" checked data-toggle="toggle" data-on="Male" data-off="Female">
</form>
app.js
var uploadSong = upload.single('song');
app.post('/acp', isLoggedIn, function (req, res) {
console.log(req.body.gender); // returns "undefined"
if(req.body.gender == 0) { // returns "undefined"
uploadSong(req, res, function (err) {
if (err) {
res.send('uploaded');
return;
}
res.redirect('/');
});
}
});
最佳答案
(A) 无法使用 multer。
(B) 使用busboy .它使用流来解析表单数据,因此您可以在文件上传之前获取表单元素值,并将字段作为事件提供。
(C) 另一种解决方案(如果您更喜欢使用 multer)是使用 multer,但添加一个 header 以发送参数值以在文件上传之前检查。一旦请求到达服务器, header 就可用。
关于javascript - 在multer上传文件之前如何获取正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41663527/