集成多部分中间件来表达应用程序

Integrating multipart middlware to express application

我需要在单个请求中接收 JSON 数据 和文件。所以我一直在使用 body-parser ,效果很好。但是,我在寻找与 express 配合良好的模块时遇到了问题。

这是我的路由器设置:

router.post('/',
  // controllers.requireAuthorization,
  controllers.multipartMiddleware,
  function (req, res) {
    console.log(req.body);
    return res.json({ body: req.body });
  },
  controllers.sitters.validate,
  controllers.sitters.create,
  controllers.sitters.serialize
);

这就是我的 multipart middleare 函数的样子,你可以看到我正在使用 multiparty:

function multipartMiddleware(req, res, next) {
  if (req.get('Content-Type').indexOf('multipart/form-data') + 1) {
    new multiparty.Form().parse(req, function (err, fields, files) {
      console.log(JSON.stringify(files));
      req.body = fields;
      return next(err);
    });
  } else {
    console.log(req.get('Content-Type'));
    return next();
  }
}

当然,为了调试目的,我已经添加了过早的响应 return。所以我需要:

目前发现的问题:

查看 loca 的值如何在环绕数组中。

我会检查 multer,它是一种流行的 Express 中间件,并且有许多不同的方式来处理文件(一个或多个)。它还允许设置字段,这些字段将通过您的 req.body.

var multer = require('multer');
var upload = multer.dest({ 'temp/' });

// looking for single file, named 'file'
app.put('/file', upload.single('file'), function(req, res) {
  // access the file
  var file = req.file

  // any form fields sent in addition to the file are here
  var body = req.body; 
});

另一个流行的包是 multer 的替代品是 busboy。还值得注意的是 multer 写在 busboy.

之上