如何在Express中获取POST字段,而不使用bodyParser中间件?

在最新版本的Express中,build议(通过debugging消息传递)是停止使用bodyParser中间件。 我读了一下,它看起来像bodyParser是jsonurlencoded中间件的包装 – 而且看,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); } }); 

问题是,在发送FormDataContent-Type将是multipart/form-data

虽然你使用的是express.json()express.urlencoded() ,但是它们每个都只对特定的Content-Type s – application/jsonapplication/x-www-form-urlencoded起作用。

由于安全考虑,Express / Connect将会移除对multipart()内置支持以及未来对multipart/form-data内容的parsing。 他们反而推荐使用 :

  • 强大
  • 连接多方或多方
  • 连接busboy或busboy

所以,为了将来对FormData支持以及在Express / Connect中的multi-part支持,您将不得不使用附加依赖。