Dan*_*ker 7 forms parsing middleware node.js express
我正在以这种形式获取表单数据
'------WebKitFormBoundarysw7YYuBGKjAewMhe\r\nContent-Disposition: form-data; name': '"a"\r\n\r\nb\r\n------WebKitFormBoundarysw7YYuBGKjAewMhe--\r\n
Run Code Online (Sandbox Code Playgroud)
我正在尝试找到一个允许我访问表单数据的中间件,如:
req.body.a // -> 'b'
Run Code Online (Sandbox Code Playgroud)
我试过了
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
Run Code Online (Sandbox Code Playgroud)
我的实现有问题,还是我没有使用正确的中间件?
工作的工具是多方的
app.post('/endpoint', function (req, res) {
var form = new multiparty.Form();
form.parse(req, function(err, fields, files) {
// fields fields fields
});
})
Run Code Online (Sandbox Code Playgroud)
上面两个答案是正确的,但现在这些方法已经过时了。multer是访问表单数据的更好方法。通过以下命令安装它:npm install multer
一些有用的正文解析器。
主体类型:解析器
表单数据:multer
x-www-form-urlencoded:express.urlencoded()
原始:express.raw()
json:express.json()
文本:express.text()
为我工作的图书馆非常强大。干净、快速并且也支持多部分请求。这是他们文档中的代码
安装:
npm install -S express-formidable
Run Code Online (Sandbox Code Playgroud)
以下是示例用法:
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
});
Run Code Online (Sandbox Code Playgroud)