繁体   English   中英

在Node.js中从邮递员发送文件时如何验证文件类型图像?

[英]How to validate file type image when send it from postman in nodejs?

我正在创建网络服务以上传带有某些文本和文件类型的图像,而该图像和图像类型应该仅为图像类型,并且是必填项。 我正在使用multer从邮递员上传文件。 我选择主体类型的表单数据,然后获取表单数据。 是否可以在控制器中写入文件移动代码。

路线代码为

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:[]
        });
    });
};
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');

这段代码工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM