带数组的多部分/表单数据

我有一个简单的表单:

<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' }));