如果我不上传文件,如何从npm的multer获取请求的正文?

时间:2016-02-12 01:04:43

标签: node.js express file-upload 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()等待回调,所以它可能没有我做的那么大,但我不喜欢在不需要时调用函数。< / p>

有没有办法打电话给upload.single(),还是我只是做了一个比实际更大的交易呢?

1 个答案:

答案 0 :(得分:1)

对于纯文字的多部分表单,您可以使用任何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只会为你解析表单的文本字段,没有文件