【问题标题】:How can I retrieve profile images when using GridFS and multer使用 GridFS 和 multer 时如何检索配置文件图像
【发布时间】:2017-07-04 12:40:07
【问题描述】:

我正在构建的应用程序的一项功能允许使用上传个人资料图片,例如在 facebook、twitter 和 quora 上。

看来 multer 是用于处理从表单上传的信息,它应该使用 GRidFS 存储在文件存储系统中。我已经完成了文件上传部分。

我如何存储图像以便用户可以访问它们?

var upload = multer({ dest: 'uploads/' });

  // image upload route
app.post('/photos/upload',upload.single('avatar'),       function(req, res) {
      console.log(req.user.img);
      console.log(req.file);
      var user = req.user;
      user.img = req.file;

      user.save(function(err) {
          res.redirect('/profile');
      });

【问题讨论】:

  • 我没有用过GridFS,但是我觉得你得把文件转成base64,然后保存到支持blob类型的文档(字段)中。
  • 想上传图片到mongodb用什么?@hosar

标签: node.js express image-uploading multer


【解决方案1】:

我能够在不使用 GridFs 的情况下解决这个问题。刚刚使用 multer 上传到上传文件夹,并为每个上传图片的用户保存了 mongo 集合中文件的路径。

var storage = multer.diskStorage({
  destination: function (req, file, cb){
    cb(null, 'public/uploads')
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname + '-' +Date.now())
  }
});
var upload = multer({ storage: storage }).single('avatar');

// to post the path to the database.

app.post('/photos/upload', function(req, res) {
        upload(req, res, function(err) {


            if (err) {
                res.redirect('/profile')
                return res.send("Error uploading file");
            } else if (req.file == null) {

                res.redirect('/profile')
            } else {

                if ((facebook != null) && (local != null)) {
                    User.findOne({

                        'facebook.email': facebook
                    }, function(err, user) {
                        if (err) {
                            return done(err);
                        }

                        console.log(user)
                        user.img = req.file.path

                        user.save(function(err) {
                            if (err) {
                                throw err;
                            }


                        });

                    });
                } else if ((facebook != null) && (local == null)) {
                    User.findOne({

                        'facebook.email': facebook
                    }, function(err, user) {
                        if (err) {
                            return done(err);
                        }

                        console.log(user)
                        user.img = req.file.path

                        user.save(function(err) {
                            if (err) {
                                throw err;
                            }


                        });

                    });
                } else if ((facebook == null) && (local != null))  {
                        User.findOne({

                            'local.email': local
                        }, function(err, user) {
                            if (err) {
                                return done(err);
                            }

                            console.log(user)
                            user.img = req.file.path

                            user.save(function(err) {
                                if (err) {
                                    throw err;
                                }


                            });

                        });
                    }
                }

            })
            res.redirect('/profile');

        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-08
    • 2017-09-20
    • 1970-01-01
    • 2014-03-29
    • 2018-09-26
    • 2021-03-21
    • 2023-03-29
    • 2019-12-05
    相关资源
    最近更新 更多