javascript - 在multer上传文件之前如何获取正文?

标签 javascript node.js express multer

在我的项目中,管理员可以上传 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/

相关文章:

node.js - 如何通过web3使用私钥登录以太坊账户?

Node.js 节流流

javascript - Ramda GroupBy - 如何按任何 Prop 分组

javascript - 如何使用 Angular 通过 DOM 中的变量名称访问对象的键

javascript - 替代方法而不是 angularjs 中的 $watch

node.js - 重命名文件夹时出现间歇性 EPERM 错误

javascript - 所有文件的版本控制后缀

node.js - 如何使用 node.js 通过 ListMatchingProducts API 访问 Amazon mws 中的 10 多个产品

javascript - Jasmine-node 期望未执行

node.js - 我可以在不使用 res.render/return 信息给用户的情况下以 Express 方式渲染 html 吗?