我正在以这种形式获取表单数据
'------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 }))
我的实施是否有问题,或者我没有使用正确的中间件?
答案 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()