Télécharger un utilisateur l'image de sa Création de compte à l'aide de express js?[fermé]
-
21-12-2019 - |
Question
Je suis nouveau sur node js et je suis la création d'une simple application où l'utilisateur crée un compte avec des détails, et j'utilise mongodb à l'arrière-plan pour stocker les données de l'utilisateur son nom, email etc.
Après la création d'un acccont je suis rediriger vers la page de connexion où l'utilisateur a à la connexion et à la connexion de la réussite de l'utilisateur sera redirigé vers un profil où je suis aujourd'hui en montrant son nom à l'aide de sessions.
Maintenant est ce que je veux, je veux télécharger un utilisateur de l'image sur la création de compte et je me demande comment m va le lier à mon compte créer un formulaire, comme indiqué dans la capture d'écran, tout en économisant à la mongodb.
Je veux montrer que l'utilisateur de l'image comme photo de profil lorsque l'utilisateur se connecte et sera redirigé vers sa page de profil.
J'ai trouvé beaucoup de liens sur l'enregistrement de l'image sur mongodb, mais ne pouvait pas obtenir de l'aide et je suis aussi à la fixation de la page de profil de capture d'écran.
Comment puis-je mettre en œuvre cette ?
page de profil
La solution
Si vous voulez vraiment économiser de l'image de profil dans MongoDB.Je vous suggère de passer par Quand dois-je utiliser GridFS?
Et puis de décider quelle est la taille maximale de la photo de profil, vous allez permettre à l'utilisateur de télécharger
MongoDB BFILS les documents sont plafonnés à 16 MO.Donc, si le total de l'ensemble de votre document de l'utilisateur ne dépasse pas les 16 MO, vous pouvez les stocker directement dans votre document à l'aide de la BinData type de données.
Les Images/Vidéos/PDF/Ppt/feuilles de calcul, etc, elle n'a jamais de questions, ils peuvent être stockés de la même façon.C'est à votre demande de retour d'un type de contenu approprié dans l'en-tête pour afficher correctement dans votre application web.
Heureux de codage..:)
Mise à jour: Pour faire que vous avez besoin base64 encode les données de l'image comme suit:
var base64Image = new Tampon(uploadedFilesData, 'binaire').toString('base64');
Puis le stocker à l'aide de Mongo de l' BinData
le type, il sera ensuite de l'enregistrer comme un BFILS tableau de bits, de ne pas enregistrer les base64
chaîne, de sorte que la taille ne poussent pas plus grand que l'original de votre image binaire.Et quand vous lisez à partir de MongoDB et que vous voulez servir comme image, vous pouvez le faire comme suit:
app.get('/getimage', function(req, res) {
db.collection.find({'imgId':req.params.id}, function(err,data) {
var base64Image = var img = new Buffer(data.imgDataField, 'base64');
res.writeHead(200, {
'Content-Type': 'image/jpeg',
'Content-Length': base64Image.buffer.length
});
res.end(base64Image.buffer);
}
}
Côté Client, vous devez montrer base64Image
les données de quelque chose comme:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAB50RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNS4xqx9I6wAAAVBJREFUOI2tlLFKA0EQhr+9i2J1kBDFYG91gYRA0ngpJELQ2KSwlFjYKIidlZVvIFgEXyBYaBH0ESysLATBPiRYWFgEye7eWkSimL1wyg1MM//Mx87O7ghjjCEhc5ICJQ5LRQm9/oDLqzsenl4QgAHK/ir7O5us5JatNcJ2Z73+gKOzCz6kQjguQoAxYELNwlyK89NDK9DaZrvTZTiS4LggBAYBQoDjMhxJ2p1u/DbvH59xU/MYrac0Y8Z6bJgJDaEF9FOPDdNKMev1hVrFh2XTHq9v75GwpYxnjVsH0GrW0UqhtZ52pWg16/FhjVpANu2Ngb88m/Zo1IL4MICg5FthQcmPKomGVSsFpJQopSYupaRaKUTCIr9TuZhnq76O47iTWBhqysX832EA1ze3COf78LnFDBzvRebP3BrbG2tfUx23eXKwOyvd/tH/a4nus083fKdxIODDXwAAAABJRU5ErkJggg==" />