2015-06-12 5 views
0

Вместо того, чтобы приложить multer ко всему экспрессу app, я пытаюсь включить его только для определенных маршрутов, что лучше, поскольку вы будете препятствовать загрузке всех маршрутов post.Установить свойства multer по экспресс-маршруту

Проблема в том, что я не могу установить ее свойства внутри маршрута.

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 не определено.

То же самое происходит, если я ставил мультер в отдельное промежуточное ПО и прикреплял его к вышеуказанному маршруту.

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.

Есть ли что-то действительно неправильное, что я делаю, или я должен начать обвинять пиво?

ответ

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')); 
+0

Любые идеи, как я должен идти о том, что делать? –

+0

@SwarajGiri Я обновил ответ на примере. –

+0

Это слишком много бьется вокруг куста, чтобы иметь настраиваемый dest. Может стоить того, чтобы дать мультерам парня стучать. –