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

Tra*_*Guy 6 javascript middleware node.js express

对于最新版本的Express,建议(通过调试消息传达)是停止使用bodyParser中间件.我读了一下,它看起来像bodyParser是一个包装到jsonurlencoded中间件-你瞧,最近快递(3.4.4)的版本使用这2代替的bodyParser开箱-灿烂的,对不对?

但现在,我无法到达我的田地.req.body未定义.这是我的JS表单提交代码(仅限文本字段,无文件).有人可以告诉我,req我使用哪个属性/功能来获取值?

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

Jon*_*ski 13

问题在于,在发送时FormData,Content-Type将是multipart/form-data.

虽然你正在使用express.json()express.urlencoded(),但它们中的每一个只分别作用于特定的Content-Types - application/jsonapplication/x-www-form-urlencoded.

由于安全问题,Express/Connect将在未来删除multipart()multipart/form-data内容的内置支持和解析.他们建议使用:

因此,对于Express/Connect的未来支持FormData以及multi-part一般情况,您必须使用附加依赖项.