我需要在一个请求中接收 JSON数据和文件。所以我一直在使用body-parser
,它完美无缺。但是我遇到了使用快速查找模块的问题。
这是我的路由器设置:
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
);
这就是我的多部分中间函数的样子,你可以看到我正在使用多方:
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();
}
}
当然我已经为调试目的添加了过早的响应返回。所以我需要:
现在看到的问题是:
查看loca
的值如何在包装数组中。
答案 0 :(得分:2)
我会检查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
之上。