如何在Express中获取POST字段,而不使用bodyParser中间件?
在最新版本的Express中,build议(通过debugging消息传递)是停止使用bodyParser
中间件。 我读了一下,它看起来像bodyParser是json
和urlencoded
中间件的包装 – 而且看,Express(3.4.4)的最新版本使用这两个而不是bodyParser
即用的bodyParser
– 出色的,对?
但现在,我无法到达我的领域。 req.body
是未定义的。 这是我的JS表单提交代码(仅文本字段,没有文件)。 请问有人可以告诉我哪个属性/函数的要求,我用来获取值?
var formData = new FormData($('#myForm')[0]); $.ajax({ url: '/myurl', cache: false, contentType: false, processData: false, data: formData, type: 'POST', success: function(data) { console.log(data); }, error: function(jqXHR, textStatus, errorThrown) { console.error('Error occured: ' + errorThrown); } });
问题是,在发送FormData
, Content-Type
将是multipart/form-data
。
虽然你使用的是express.json()
和express.urlencoded()
,但是它们每个都只对特定的Content-Type
s – application/json
和application/x-www-form-urlencoded
起作用。
由于安全考虑,Express / Connect将会移除对multipart()
内置支持以及未来对multipart/form-data
内容的parsing。 他们反而推荐使用 :
- 强大
- 连接多方或多方
- 连接busboy或busboy
所以,为了将来对FormData
支持以及在Express / Connect中的multi-part
支持,您将不得不使用附加依赖。