2017-04-20 4 views
0

サーバーに画像をアップロードする必要がありますが、jpeg \ pngやファイルサイズ> 10Mbでない場合は、エラーを表示する必要があります。画像はうまくアップロードされますが、.zipファイルをアップロードしようとすると、コンソールが空になります。なぜコードがエラーを処理できないのですか?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); 
}); 

答えて

0

完了。ストレージ機能からfileFilterを削除するだけです。

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 }); 
関連する問題