如果我不上传文件,如何从 npm 的 multer 获取请求的主体?
How do I get the body of a request from npm's multer if I don't upload a file?
我有一个使用 express
的节点服务器。
我最初使用的是 body-parser
,但不允许上传文件。所以,我切换到 multer
(与 express
的最简单集成)。但是,为了获得任何 req
(特别是 req.body
),这是我的代码:
var multer = require('multer');
var upload = multer({ dest : 'uploads/' });
server.all('/example', function (req, res, next) {
var up = upload.single('photo')
up(req, res, function(err) {
console.log(req.body); // I can finally access req.body
});
}
问题在于,并非我的所有路线都需要上传文件。我是否需要在为每条路线调用 upload.single()
时浪费 CPU 才能访问正文? upload.single('')
最终没有上传任何文件,但它仍然在主线程上花费了宝贵的时间。
看来 upload.single()
正在等待回调,所以它可能没有我做的那么重要,但我不喜欢在不需要时调用函数.
有没有办法绕过调用 upload.single()
,或者我只是在做比实际更大的交易?
对于纯文本多部分表单,您可以使用任何 multer 方法,它们是 .single()
、.array()
、fields()
例如使用.array()
var multer = require('multer');
var upload = multer({ dest : 'uploads/' });
server.all('/example', upload.array(), function (req, res, next) {
console.log(req.body);
});
使用哪个并不重要,只要调用时不带参数 Multer 只会为您解析表单的文本字段,不会解析文件
我有一个使用 express
的节点服务器。
我最初使用的是 body-parser
,但不允许上传文件。所以,我切换到 multer
(与 express
的最简单集成)。但是,为了获得任何 req
(特别是 req.body
),这是我的代码:
var multer = require('multer');
var upload = multer({ dest : 'uploads/' });
server.all('/example', function (req, res, next) {
var up = upload.single('photo')
up(req, res, function(err) {
console.log(req.body); // I can finally access req.body
});
}
问题在于,并非我的所有路线都需要上传文件。我是否需要在为每条路线调用 upload.single()
时浪费 CPU 才能访问正文? upload.single('')
最终没有上传任何文件,但它仍然在主线程上花费了宝贵的时间。
看来 upload.single()
正在等待回调,所以它可能没有我做的那么重要,但我不喜欢在不需要时调用函数.
有没有办法绕过调用 upload.single()
,或者我只是在做比实际更大的交易?
对于纯文本多部分表单,您可以使用任何 multer 方法,它们是 .single()
、.array()
、fields()
例如使用.array()
var multer = require('multer');
var upload = multer({ dest : 'uploads/' });
server.all('/example', upload.array(), function (req, res, next) {
console.log(req.body);
});
使用哪个并不重要,只要调用时不带参数 Multer 只会为您解析表单的文本字段,不会解析文件