2017-04-20 3 views
0

J'ai besoin de télécharger des images sur le serveur, mais si ce n'est pas jpeg \ png, ou taille de fichier> 10Mb, j'ai besoin d'afficher une erreur. Images téléchargeant bien, mais quand j'essaye de télécharger le fichier .zip, ma console est vide, pourquoi mon code ne peut pas traiter une erreur?Comment gérer les erreurs avec multer?

var multer = require('multer'); 
var storage = multer.diskStorage({ 
     destination: function (req, file, cb) { 
      cb(null, '../public/img/avatars') 
     }, 
     filename: function (req, file, cb) { 
      cb(null, ''+req.user._id+'') 
     }, 
     fileFilter: function (req, file, cb) { 
      if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/gif') { 
       console.log('Wrong format!'); 
       return cb(null, false, new Error('Wrong format!')); 
      } 
      if (file.size > 10000){ 
       console.log('Too large!'); 
       return cb(null, false, new Error('Too large!')); 
      } 
      cb(null, true); 
     } 
    }); 

var upload = multer({ storage: storage }); 

router.post('/changeAvatar', upload.single('avatar'), function(req, res) { 
    var id = req.user._id; 
    res.redirect('/user/'+id); 
}); 

Répondre

0

Terminé. Supprimez simplement fileFilter de la fonction de stockage.

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, '../public/img/avatars') 
    }, 
    filename: function (req, file, cb) { 
     cb(null, ''+req.user._id+'') 
    } 
}); 
function fileFilter(req, file, cb) { 
    if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/gif') { 
     console.log('Неправильный формат изображения!'); 
     return cb(null, false); 
    } 
    if (file.size > 10000){ 
     console.log('Изображение весит слишком много!'); 
     return cb(null, false); 
    } 
    cb(null, true); 
} 

var upload = multer({ storage: storage, fileFilter: fileFilter });