2017-08-29 59 views
0

我创建的Web服务与一些文字发送图像。我从邮递员发送文件,然后得到这个错误未处理拒绝错误:无法设置头,他们被送到后,req.body是空& req.files不确定。这是邮递员的屏幕截图。 `enter image description here如何解决未处理拒绝错误:无法设置头发送之后?

控制器代码在这里,要上传&验证图像&一些文本数据。

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(/\.(jpg)$/)){ 
      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('myFile'); 

userController.saveUser = function(req,res){ 
    upload(req,res,function(err){ 
     if(err){ 
      if(err.code === 'LIMIT_FILE_SIZE'){ 
       return res.json({success:false,message:'File sizee is too large. Max limit is 10mb'}); 
      }else if(err.code === 'filetype'){ 
       return res.json({success:false,message:'File type is invalid.'}); 
      }else{ 
       console.log(err); 
       return res.json({success:'false',message:'File was not able to uploaded'}); 
      } 
     }else{ 
      if(!req.files){ 
       return res.json({success:false,message:'No file selected!'}); 
      }else{ 
       return res.json({success:true,message:'File was uploaded successfully!'}); 
      } 
     } 
    }); 
    var params = req.body; 

    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), 
      is_active : helper.trimInputValue(user.INACTIVE), 
     } 
    }) 
    .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

我已经解决了我的问题,我需要写在上传成功的块我插入的代码。

userController.saveUser = function(req,res){ 
    upload(req,res,function(err){ 
     if(err){ 
      if(err.code === 'LIMIT_FILE_SIZE'){ 
       res.send({success:false,message:'File sizee is too large. Max limit is 10mb'}); 
      }else if(err.code === 'filetype'){ 
       res.send({success:false,message:'File type is invalid.'}); 
      }else{ 
       console.log(err); 
       res.send({success:'false',message:'File was not able to uploaded'}); 
      } 
     }else{ 
      if(!req.files){ 
       res.send({success:false,message:'No file selected!'}); 
      }else{ 
       var params = req.body; 
       console.log(params); 
       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), 
         is_active : helper.trimInputValue(user.INACTIVE), 
        } 
       }) 
       .spread(function(user, created) { 
        var msg = ''; 
        if(created){ 
         msg = 'User inserted successfully!'; 
         var mailOptions = { 
          from : '[email protected]', 
          to : '[email protected]', 
          subject : 'New User Registered!', 
          html : '<b>Hello</b>'+ ' ' + user.dataValues.first_name + ' welcome to boltt family.' 
         }; 
         transporter.sendMail(mailOptions,function(err,info){ 
          if(err){ 
           console.log(err); 
          } 
          console.log('Message %s sent : %s',info.messageId , info.response); 
         }); 
        }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 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'); 

未处理的废品:发送之后不能设置头,这个错误发生,因为我是返回JSON响应两次。这个错误也被删除。现在我的代码工作正常。

相关问题