2017-02-15 3 views
0

L'une des fonctionnalités de l'application que je suis en train de construire permet de télécharger des photos de profil sur facebook, twitter et quora.Comment puis-je récupérer des images de profil lors de l'utilisation de GridFS et de multer

Il semble que multer traite les informations téléchargées à partir du formulaire et qu'il est supposé être stocké dans un système de stockage de fichiers utilisant GRidFS. J'ai terminé la partie de téléchargement de fichier.

Comment est-ce que je stocke les images afin qu'elles puissent être consultées par l'utilisateur?

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

+0

Je n'ai pas utiliser GridFS, mais je pense que vous devrez convertir le fichier en base64, puis enregistrez-le dans un document (champ) qui prennent en charge les types de blob. – Hosar

+0

Qu'est-ce que vous utilisez pour télécharger des images sur mongodb? @hosar –

Répondre

0

j'ai pu résoudre cela sans l'aide GridFS. Juste utilisé multer pour télécharger dans un dossier de téléchargement et enregistré le chemin d'accès au fichier dans la collection mongo pour chaque utilisateur qui télécharge une image.

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

 
     });