У меня есть рабочий api для обслуживания изображений в маршруте на моем сервере server.js и хочу абстрагировать его на отдельный модуль.req.params undefined в модуле
перед:
app.get('/api/image/:filename', function(req, res){
var resourcePath = 'uploads/public/projectnumber/issues/small/' + req.params.filename + '.png';
console.log(resourcePath)
if(fs.existsSync(resourcePath)) {
var file = fs.readFileSync(resourcePath);
res.writeHead(200, 'Content-Type:application/pdf:image/png');
res.end(file,'binary');
}
else {
res.send(400, 'No image found');
}
})
Я хочу что-то вроде этого:
var ImageRouter = require('./routes/imageRouter');
app.use('/api/image/:filename', ImageRouter);
и я пытался писать его, как это в моем файле imageRouter.js:
var express = require('express');
var fs = require('fs');
var router = express.Router();
router.use(function(req, res, next) {
var resourcePath = 'public/images/' + req.params.filename + '.png';
if(fs.existsSync(resourcePath)) {
var file = fs.readFileSync(resourcePath);
res.writeHead(200, 'Content-Type:application/pdf:image/png');
res.end(file,'binary');
}
else {
res.send(400, 'No image found');
}
next();
});
module.exports = router;
Но req.params.filename не определено. Где я ошибся?
Спасибо!
Что показывает в консоли, когда вы делаете 'console.log (req.params);'? –
Это предполагаемое поведение. Решение Арно должно работать. Подробнее здесь -> https://github.com/strongloop/express/issues/2660 – Jordonias