具有数组的多部分/表单数据

时间:2014-05-15 09:25:10

标签: node.js express kraken.js

我有一个简单的表格:

<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

1 个答案:

答案 0 :(得分:0)

这可能与使用body-parser(尤其是urlencoded方法)有关,by default仅适用于媒体类型application/x-www-form-urlencoded的请求。

您的主应用程序模块可能包含以下几行:

const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded());

我想,你可以添加以下内容来解析multipart/form-data类型的请求:

app.use(bodyParser.urlencoded({
  type: 'multipart/form-data'
}));