使用express js的多部分表单数据发布方法

Luc*_*cas 3 javascript multipartform-data express pug

我试图将表单数据发布到我的 express js 服务器端。这是我的pug文件

form(action="/profile" method="post" enctype="multipart/form-data")
 input(type="file" accept="image/*" name="profileimage")
 input(type="text" name="username")
 input(type="submit" value="Upload")
Run Code Online (Sandbox Code Playgroud)

之后,我尝试使用req.body内部服务器端 js记录发布数据,如下所示。那是我的profile.js

router.post('/', function (req, res) {
  console.log('Body- ' + JSON.stringify(req.body));
});
Run Code Online (Sandbox Code Playgroud)

这是我的控制台结果 body- {}

如果我发布没有enctype="multipart/form-data"like form(action="/profile" method="post"),我可以从我的控制台结果中获取发布数据。

Ate*_*tef 7

您需要使用中间件来处理多部分表单数据,我认为最著名的是multer

你可以在这里找到它:https : //github.com/expressjs/multer

要使用它:

  1. 首先npm install --save multer在你的根项目中将它添加到你的模块中

  2. 然后将其导入到您的 .js 文件中 var multer = require('multer');

  3. 通过destmulter构造函数中设置参数来选择您的上传目录:var upload = multer({ dest: 'uploads/' });

  4. 现在只需将它作为中间件传递到您的 POST 函数中,如下所示:

    router.post('/', upload, function (req, res) {
      console.log('Body- ' + JSON.stringify(req.body));
    });
    
    Run Code Online (Sandbox Code Playgroud)

并且不要忘记阅读他们 github 存储库中的文档。

  • 谢谢@Atef,但这会将数据分割成 req.file 和 req.body 。请问有没有一种方法可以将所有数据集中在一个表单中。在 req.body 中,以便我可以将数据按原样发送到另一个 api。 (2认同)