带数组的多部分/表单数据
我有一个简单的表单:
<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" }
什么问题? 有需要的configuration吗?
如果你想知道,我也发送一个文件,为什么我需要multipart/form-data
。
这可能与使用body-parser (尤其是urlencoded
方法)有关, 默认情况下 ,这个方法只针对媒体typesapplication/x-www-form-urlencoded
。
你的主应用程序模块可能有这样的一些行:
const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded());
我想,你可以添加下面的内容来parsingtypes为multipart/form-data
请求:
app.use(bodyParser.urlencoded({ type: 'multipart/form-data' }));