我有一个简单的表格:
<form method="post" action="/test">
<input type="hidden" name="arr[]" value="val1">
<input type="hidden" name="arr[]" value="val2">
<input type="hidden" name="arr[]" value="val3">
<input type="submit" value="Submit">
</form>
使用控制器:
//...
server.post('/test', function(req, res) {
res.json(req.body);
});
//...
这返回正常:
{
arr: [
"val1",
"val2",
"val3"
]
}
但是,当我将 enctype 更改为 multipart/formdata 时
<form method="post" action="/test" enctype="multipart/form-data">
<input type="hidden" name="arr[]" value="val1">
<input type="hidden" name="arr[]" value="val2">
<input type="hidden" name="arr[]" value="val3">
<input type="submit" value="Submit">
</form>
服务器现在响应:
{
arr[]: "val3"
}
有什么问题吗?我需要某种配置吗?
如果您想知道,我还发送了一个文件,这就是为什么我需要multipart/form-data
.
可能与使用有关正文解析器 https://github.com/expressjs/body-parser(特别是urlencoded
方法)其中,默认情况下 https://github.com/expressjs/body-parser#bodyparserurlencodedoptions,适用于媒体类型的请求application/x-www-form-urlencoded
only.
您的主应用程序模块可能有一些像这样的行:
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded());
我想,您可以添加以下内容来获得类型的请求multipart/form-data
也解析了:
app.use(bodyParser.urlencoded({
type: 'multipart/form-data'
}));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)