2017-08-29 4 views
0

私はいくつかのテキストで画像をアップロードするためにWebサービスを作成しています&ファイルタイプはイメージタイプのみで、必須です。私は郵便配達員からファイルをアップロードするためにmulterを使用しています。私はボディタイプのフォームデータを選択してフォームデータを取得します。コントローラにファイル移動コードを書き込むことは可能ですか?nodejsの郵便配達員からファイルを送信する際、ファイルタイプの画像を検証する方法は?

ルートコードが

var multer = require('multer'); 
var uploadPic = multer({dest:'public/uploads/profile'}); 

router.post('/v1/insertUser',uploadPic.any(),userController.saveUser); 

コントローラー・コードである私は、データを挿入するためにsequelizeを使用しています、です。

userController.saveUser = function(req,res){ 
    var params = req.body; 
    req.checkBody('first_name', 'The first name is required!').notEmpty(); 
    req.checkBody('email', 'The email is required!').notEmpty(); 
    req.checkBody('email', 'The email format is incorrect!').isEmail(); 
    req.checkBody('boltt_code', 'The boltt code is required!').notEmpty(); 

    var errors = req.validationErrors(); 
    var userError = Array(); 
    if(errors){ 
     if(errors.length){ 
      for(var key in errors){ 
       userError.push({ 
        'key' : errors[key].param, 
        'message' : errors[key].msg 
       }); 
      } 
     } 
     return res.send({message: userError,status:'Failure',response:200,data:[]}); 
    } 
    user.findOrCreate({ 
     where:{ 
      first_name: helper.trimInputValue(params.first_name), 
      email: helper.trimInputValue(params.email), 
      boltt_code: helper.trimInputValue(params.boltt_code) 
     }, 
     defaults:{ 
      first_name: helper.trimInputValue(params.first_name), 
      middle_name : '', 
      last_name : '', 
      email: helper.trimInputValue(params.email), 
      boltt_code: helper.trimInputValue(params.boltt_code), 
      image : req.files.filename, 
     } 
    }) 
    .spread(function(user, created) { 
     var msg = ''; 
     if(created){ 
      msg = 'User inserted successfully!'; 
     }else{ 
      msg = 'User already exist!'; 
     } 
     res.send({ 
      message : msg, 
      status:'Success', 
      response:200, 
      data : user 
     }); 
    }).catch(Sequelize.ValidationError,function(err){ 
     data = err.errors; 
     var userError = Array(); 
     if(data.length){ 
      for(var key in data){ 
       userError.push({ 
        'key' : data[key].path, 
        'message' : data[key].message 
       }); 
      } 
     } 
     res.send({ 
      message : userError, 
      status : 'Failure', 
      response:200, 
      data:[] 
     }); 
    }).catch((err) => { 
     res.send({ 
      message : err, 
      status:'Failure', 
      response : 500, 
      data:[] 
     }); 
    }); 
}; 

答えて

0
var multer = require('multer'); 

var storage = multer.diskStorage({ 
    destination : function(req,file,cb){ 
     cb(null,'public/uploads/profile/'); 
    }, 
    filename : function(req,file,cb){ 
     if(!file.originalname.match(/\.(png)$/)){ 
      var err = new Error(); 
      err.code = 'filetype'; 
      return cb(err); 
     }else{ 
      cb(null,file.originalname + '_' + Date.now()); 
     } 
    } 
}); 

var upload = multer({ 
    storage : storage, 
    limits : {fileSize : 10000000} 
}).single('image'); 

このコードは正常に動作しています。

関連する問題