解析表格数据Node.js Express

时间:2015-06-04 21:45:56

标签: node.js forms parsing express middleware

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

'------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 }))

我的实施是否有问题,或者我没有使用正确的中间件?

3 个答案:

答案 0 :(得分:7)

有效的工具是multiparty

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

答案 1 :(得分:2)

为我工作的图书馆非常强大。清洁,快速并支持多部分请求。 这是来自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 
});

答案 2 :(得分:1)

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

一些有用的正文解析器。

主体类型:解析器

  • 表单数据:multer

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

  • 原始:express.raw()

  • json:express.json()

  • 文本:express.text()