2017-10-27 20 views
0

私はmulterで写真をアップロードしようとしていますが、すべてがOKです。しかし、私はmongooseデータベースのイメージ名を送信することができません、イメージはアップロードディレクトリに正常にアップロードされています私はbodyURLを持っていますが、私はmongooseデータベースのイメージ名を更新することはできませんが、私はコンソール上で本文を印刷するときの画像。 enter image description heremulterとexpressを使用してデータベースにイメージ名を送信する方法

//file upload using multer 
 
var storage = multer.diskStorage({ 
 
    destination: function (req, file, callback) { 
 
     callback(null, './uploads'); 
 
    }, 
 
    filename: function (req, file, callback) { 
 
     if (!file.originalname.match(/\.(jpg|png|JPEG)$/)) { 
 
      var err = new Error(); 
 
      err.code = 'filetype'; 
 
      return callback(err); 
 
     } else { 
 
      callback(null, Date.now() + file.originalname); 
 
     } 
 

 
    } 
 
}); 
 
var upload = multer({ 
 
    storage: storage, 
 
    limits: { 
 
     fileSize: 1000000 
 
    } 
 
}).single('userImage'); 
 
app.patch('/updateProfile', authenticate, (req, res) => { 
 
    upload(req, res, function(err) { 
 
     var body = _.pick(req.body, ['name', 'email', 'mobile', 'imageUrl']); 
 

 
     User.findOneAndUpdate({ 
 
      _id: req.user._id 
 
     }, { 
 
      $set: body 
 
     }, { 
 
      new: true 
 
     }).then((user) => { 
 
      if (!req.file) { 
 
       return res.send({ 
 
        success: false, 
 
        msg: 'No file selected' 
 
       }) 
 
      } 
 
      if (!user) { 
 
       res.status(404).send({ 
 
        success: false, 
 
        msg: 'user not found' 
 
       }) 
 
      } else { 
 
       body.imageUrl = req.file.filename; 
 
       console.log(body) 
 
       res.send({ 
 
        sucess: true, 
 
        msg: 'update sucessfully', 
 
        user 
 
       }) 
 
      } 
 
     }).catch((err) => { 
 
      res.send({ 
 
       success: false, 
 
       msg: 'something wrong', 
 
       error: err 
 
      }); 
 
     }); 
 
     if (err) { 
 
      if (err.code === 'LIMIT_FILE_SIZE') { 
 
       return res.send({ 
 
        success: false, 
 
        msg: 'limit file size 1MB ' 
 
       }) 
 
      } else if (err.code === 'filetype') { 
 
       return res.send({ 
 
        success: false, 
 
        msg: 'Must be valid file extension only jpg or png' 
 
       }) 
 
      } else { 
 
       return res.send({ 
 
        success: false, 
 
        msg: 'something went wrong' 
 
       }) 
 
      } 
 
     } 
 

 
    }); 
 
});

+0

そのbody.imageurlは何ですか? – Kannan

+0

本文は私が上記で宣言した変数です –

+0

elseの部分でこのconsole.log(ユーザ)を試してみて、それが何をコンソールにしているか教えてください – Kannan

答えて

0
var storage = multer.diskStorage({ 

    destination: function (req, file, callback) { 

        callback(null, './images/post'); 

    }, 

    filename: function (req, file, callback) { 

        if (!file.originalname.match(/\.(jpg|png|JPEG)$/)) { 

            var err = new Error(); 

            err.code = 'filetype'; 

            return callback(err); 

        } else { 

            callback(null, Date.now() + file.originalname); 

        } 


    } 

}); 

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

router.post('/posts',authenticate, (req, res) => { 

    upload(req, res, function (err) { 

        if (err) { 

            if (err.code === 'LIMIT_FILE_SIZE') { 

                return res.send({ success: false, msg: 'limit file size 1MB ' }) 

            } else if (err.code === 'filetype') { 

                return res.send({ success: false, msg: 'Must be valid file extension only jpg or png' }) 

            } else { 

                return res.send({ success: false, msg: 'something went wrong' }) 

            } 

        } else { 

            if (!req.file) { 

                return res.send({ success: false, msg: 'No file selected' }) 

            } 

            var post = new Post({ 

                heading: req.body.heading, 

                body: req.body.body, 

                imageUrl: req.file.filename, 

                creator:req.user.id, 

            }); 

            post.save().then((result) => { 

                res.send({ post: result, sucess: true, msg: 'Post created' }); 

            }).catch((err) => { 

                res.send({ sucess: false, msg: 'post not created', error: err }) 

            }); 

        } 

    }); 


}); 
関連する問題