Node.js 带数组的多部分/表单数据
我有一个简单的表格:Node.js 带数组的多部分/表单数据,node.js,express,kraken.js,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" val
<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>
这可以通过以下方式返回:
{
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>
有什么问题吗?有什么我需要的配置吗
如果您想知道,我也在发送一个文件,这就是为什么我需要
multipart/form data
它可能与使用(特别是urlencoded
方法)有关,该方法仅适用于媒体类型应用程序/x-www-form-urlencoded
的请求
您的主应用程序模块可能有以下几行代码:
constbodyparser=require('body-parser');
use(bodyParser.urlencoded());
我想,您只需添加以下内容即可解析multipart/formdata
类型的请求:
app.use(bodyParser.urlencoded({
类型:“多部分/表单数据”
}));
似乎多方不能正确处理这种情况。我很想看看结果如何。如果你找不到解决方案,试着在下面报告:你发现哪里出了问题吗?我也有同样的问题,数组语法是表单语法的非标准扩展。url编码数据的主体解析可以识别它,但多部分数据的主体解析不能识别它。您没有提供,因此我们不知道您使用的是什么主体解析器,因此我们无法判断这是因为不支持还是只需要启用支持。多部分语法与urlencoded语法完全不同。你不能把一个语法分析器用于另一个语法分析器。哎呀,我的错!但是body parser没有多部分语法,您需要一个专用模块来处理多部分请求,如body parser文档中提到的busboy或multer。他们已经在使用一个模块(否则他们将无法得到他们所说的结果),但是我们不知道是哪一个。只是一个猜测:这个问题被标记为kraken.js
,所以它可能是。我认为,他们在第一个示例中看到的结果可以归因于使用了体解析器的{extended:true}
标志。
<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"
}