解析 Post 表单数据 Node.js 表达

Parsing Post Form Data Node.js Express

我正在以这种形式获取表单数据

'------WebKitFormBoundarysw7YYuBGKjAewMhe\r\nContent-Disposition: form-data; name': '"a"\r\n\r\nb\r\n------WebKitFormBoundarysw7YYuBGKjAewMhe--\r\n

我正在尝试找到一个中间件,它可以让我像这样访问表单数据:

req.body.a // -> 'b'

我试过了

var express = require('express');
var app = express();


var bodyParser = require('body-parser');

// parse application/x-www-form-urlencoded 
app.use(bodyParser.urlencoded({ extended: false }))

是我的实现有问题还是我没有使用正确的中间件?

有用的工具是multiparty

app.post('/endpoint', function (req, res) {
    var form = new multiparty.Form();
    form.parse(req, function(err, fields, files) {
        // fields fields fields
    });
})

为我工作的图书馆非常强大。干净、快速并且也支持多部分请求。 这是来自 their docs

的代码

安装:

npm install -S express-formidable

这是示例用法:

const express = require('express');
const formidable = require('express-formidable');

var app = express();

app.use(formidable());

app.post('/upload', (req, res) => {
  req.fields; // contains non-file fields 
  req.files; // contains files 
});

以上两个答案是正确的,但现在那些方法已经过时了。 multer 是访问表单数据的更好方法。通过以下命令安装它:npm install multer

一些有用的正文解析器。

Body-type: 解析器

  • form-data: 多

  • x-www-form-urlencoded: express.urlencoded()

  • 原始:express.raw()

  • json: express.json()

  • 文本:express.text()