0

我没有将其附加multer到整个快递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.filesundefined

我做错了什么还是应该开始责怪啤酒?

4

1 回答 1

0

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'));
于 2015-06-12T08:51:57.900 回答