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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果我不上传文件,如何从npm的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
    });
}

问题在于,并非所有路由都需要上传文件。我是否需要浪费CPU为每条路线调用upload.single()才能进入身体? 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只会为你解析表单的文本字段,没有文件

以上是关于如果我不上传文件,如何从npm的multer获取请求的正文?的主要内容,如果未能解决你的问题,请参考以下文章

如果没有上传图像,如何将默认图像放入 multer?

使用 Multer 将带有 fetch 的图像上传到 Express

使用 multer 上传的文件存储在云端后如何删除?

如何使用 Multer 在 MERN Stack 应用程序中上传图像文件

Node/Multer 获取文件名

使用具有角度7平均堆栈的multer中间件上传文件不起作用