在快速路线中设置多个属性
Set multer properties inside an express route
我没有将 multer
附加到整个 express app
,而是尝试仅针对特定路线包含它,这样更好,因为您将阻止上传到每条路线处理 post
.
问题是,我无法在路由内设置它的属性。
var router = require('express').Router(),
multer = require('multer');
router.post('/uploads', function (req, res, next) {
multer({
dest: req.app.get('cfg').uploads.dir
});
console.log(req.files); process.exit();
});
此处,req.files
未定义。
如果我将 multer 放在一个单独的中间件中并将其附加到上述路由,也会发生同样的事情。
function initMulter(req, res, next) {
multer({
dest: req.app.get('cfg').uploads.dir
});
next();
}
router.post('/uploads', initMulter, function (req, res, next) {
console.log(req.files); process.exit();
});
同样在这种情况下,req.files
是 undefined
。
我真的做错了什么吗?或者我应该开始责怪啤酒吗?
Multer 是它自己的中间件。
您可以通过以下方式将其添加到路线:
router.post('/uploads', multer({
dest: './my/destination' //req.app.get('cfg').uploads.dir
}), function (req, res, next) {
console.log(req.files);
process.exit();
});
虽然您将不得不找到另一种方式来访问您的配置。
一种方法是通过导出函数传递配置或app
。
module.exports = function(config) {
router.post('/uploads', multer({
dest: config.uploads.dir
}), function (req, res, next) {
console.log(req.files);
process.exit();
});
return router;
});
那么当你需要的时候,
var route = require('./route')(app.get('cfg'));
我没有将 multer
附加到整个 express app
,而是尝试仅针对特定路线包含它,这样更好,因为您将阻止上传到每条路线处理 post
.
问题是,我无法在路由内设置它的属性。
var router = require('express').Router(),
multer = require('multer');
router.post('/uploads', function (req, res, next) {
multer({
dest: req.app.get('cfg').uploads.dir
});
console.log(req.files); process.exit();
});
此处,req.files
未定义。
如果我将 multer 放在一个单独的中间件中并将其附加到上述路由,也会发生同样的事情。
function initMulter(req, res, next) {
multer({
dest: req.app.get('cfg').uploads.dir
});
next();
}
router.post('/uploads', initMulter, function (req, res, next) {
console.log(req.files); process.exit();
});
同样在这种情况下,req.files
是 undefined
。
我真的做错了什么吗?或者我应该开始责怪啤酒吗?
Multer 是它自己的中间件。
您可以通过以下方式将其添加到路线:
router.post('/uploads', multer({
dest: './my/destination' //req.app.get('cfg').uploads.dir
}), function (req, res, next) {
console.log(req.files);
process.exit();
});
虽然您将不得不找到另一种方式来访问您的配置。
一种方法是通过导出函数传递配置或app
。
module.exports = function(config) {
router.post('/uploads', multer({
dest: config.uploads.dir
}), function (req, res, next) {
console.log(req.files);
process.exit();
});
return router;
});
那么当你需要的时候,
var route = require('./route')(app.get('cfg'));