Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 带数组的多部分/表单数据_Node.js_Express_Kraken.js - Fatal编程技术网

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"
}