使用gridfs和multer时,如何检索配置文件图像



我正在构建的应用程序的功能之一允许在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的情况下解决此问题。只是使用multer上传到上传文件夹,并为上传图像的每个用户保存了通往文件的路径。

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

最新更新