2016-07-12 1 views
0
var express = require('express'); 
var router = express.Router(); 
var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, 'public/uploads/'); 
    }, 
    filename: function (req, file, cb) { 
     cb(null, file.originalname); 
    } 
}); 
var upload = multer({ 
    storage: storage, fileFilter: function (req, file, cb) { 
     if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg') { 
      return cb(null, false); 
     } 
     return cb(null, true); 
    } 
}).any(); 



/* get home page. */ 
router.get('/', function (req, res) { 
    res.render('index', { title: 'express' }); 
}); 

router.post('/', function (req, res) { 
    upload(req, res, function (err) { 
     if (err) { 
      //I want to jump to another page 
     } else { 
      res.send(req.files); 
     } 
    });  
}); 


module.exports = router; 

В случае if (err) условие Я хочу перенаправить страницу, созданную мной в папке views, ее называют неправильной. Однако, если я использую res.redirect («неправильный») или res.redirect («views/wrong»), они просто не работают. На самом деле я пробовал много методов, но все они не работали. Если я загружу файл, но не картинку, он перейдет на страницу с одним «[]» в ней. Как я могу перенаправить?Невозможно использовать filefilter для перенаправления другой страницы в express js

+0

необходимо указать действующий маршрут в res.redirect(). Он не примет вид. –

+0

Вы пытались res.redirect ('/ your-redirect-url'); ? –

+0

Хорошо. У меня нет действующего маршрута. Итак, как я могу показать страницу, которую я написал в папке просмотра? – OtakuFitness

ответ

0

Я получаю альтернативу. В этом случае он может отобразить неправильное сообщение, если вы загружаете файл неправильного типа.

var express = require('express'); 
var router = express.Router(); 
var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, 'public/uploads/'); 
    }, 
    filename: function (req, file, cb) { 
     cb(null, file.originalname); 
    } 
}); 
var upload = multer({ 
    storage: storage, fileFilter: function (req, file, cb) { 
     if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg') { 
      req.fileValidationError = 'goes wrong on the mimetype'; 
      return cb(null, false, new Error('goes wrong on the mimetype')); 
     } 
     return cb(null, true); 
    } 
}).any(); 



/* get home page. */ 
router.get('/', function (req, res) { 
    res.render('index', { title: 'express' }); 
}); 

router.post('/', function (req, res) { 
    upload(req, res, function (err) { 
     if (req.fileValidationError) { 
      //I want to jumpt to another page 
      res.send("You didn't upload a valid pic"); 
     } else { 
      res.send(req.files); 
     } 
    });  
}); 


module.exports = router; 
0

Вы могли бы использовать что-то вроде этого:

router.post('/', function (req, res) { 
    upload(req, res, function (err) { 
     if (err) { 
      res.redirect('/?error=upload_error'); 
     } else { 
      res.send(req.files); 
     } 
    });  
}); 

Использование upload_error на странице, чтобы показать ошибку.

+0

Прошу прощения. Я не понял. – OtakuFitness