Stocker des images dans une base de données MongoDB
174
Comment puis-je stocker des images dans une base de données MongoDB plutôt que du texte? Puis-je créer un tableau d'images dans une base de données MongoDB? Sera-t-il possible de faire de même pour les vidéos?
GridFS est destiné aux documents> 16 Mo. Toutes les données binaires ne sont pas aussi volumineuses. En plus de pouvoir dépasser cette limite, y a-t-il d'autres avantages à utiliser GridFS au lieu du type BinData?
Brandon Fitzpatrick
3
Les vidéos auront tendance à être> 16 Mo, donc cette réponse est probablement raisonnable. Devrait peut-être le mentionner cependant.
Chanoch
1
une autre solution, plutôt que d'utiliser GridFS?
Abhishek Mani
1
@AbhishekMani, l'autre solution est de ne pas du tout les stocker dans MongoDB. Maintenant, en 2018, il est infiniment plus facile d'écrire ces données dans quelque chose comme le stockage S3 d'Amazon ou Azure BLOB.
Les documents MongoDB BSON sont limités à 16 Mo. Donc, si la taille totale de votre tableau de fichiers est inférieure à cela, vous pouvez les stocker directement dans votre document en utilisant le type de données BinData .
Vidéos, images, PDF, feuilles de calcul, etc. - peu importe, ils sont tous traités de la même manière. C'est à votre application de renvoyer un en-tête de type de contenu approprié pour les afficher.
Il existe un plugin Mongoose disponible sur NPM appelé mongoose-file. Il vous permet d'ajouter un champ de fichier à un schéma Mongoose pour le téléchargement de fichiers. Je ne l'ai jamais utilisé mais cela pourrait s'avérer utile. Si les images sont très petites, vous pouvez les encoder en Base64 et enregistrer la chaîne dans la base de données.
Vous pouvez utiliser le type de données bin si vous utilisez un langage de script pour stocker des fichiers / images dans MongoDB. Les données Bin sont développées pour stocker des fichiers de petite taille.
Reportez-vous à votre pilote de langage de script. Pour PHP, cliquez ici .
base64
, voir stackoverflow.com/questions/11442356 J'ai également trouvé menge.io/2015/03/24/storing-small-images-in- mongodb un très bon point de départ.Réponses:
Veuillez consulter la documentation GridFS pour plus de détails sur le stockage de ces données binaires.
La prise en charge de votre langue spécifique doit être liée au bas de l'écran.
la source
Les documents MongoDB BSON sont limités à 16 Mo. Donc, si la taille totale de votre tableau de fichiers est inférieure à cela, vous pouvez les stocker directement dans votre document en utilisant le type de données BinData .
Vidéos, images, PDF, feuilles de calcul, etc. - peu importe, ils sont tous traités de la même manière. C'est à votre application de renvoyer un en-tête de type de contenu approprié pour les afficher.
Consultez la documentation GridFS pour plus de détails.
la source
Vous pouvez essayer celui-ci:
la source
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
Il existe un plugin Mongoose disponible sur NPM appelé mongoose-file. Il vous permet d'ajouter un champ de fichier à un schéma Mongoose pour le téléchargement de fichiers. Je ne l'ai jamais utilisé mais cela pourrait s'avérer utile. Si les images sont très petites, vous pouvez les encoder en Base64 et enregistrer la chaîne dans la base de données.
Stockage de petits fichiers (moins de 1 Mo) avec MongoDB dans NodeJS SANS GridFS
la source
Vous pouvez utiliser le type de données bin si vous utilisez un langage de script pour stocker des fichiers / images dans MongoDB. Les données Bin sont développées pour stocker des fichiers de petite taille.
Reportez-vous à votre pilote de langage de script. Pour PHP, cliquez ici .
la source
installer ci-dessous les bibliothèques
connectez votre mongo db:
Définir le schéma de la base de données
en utilisant le middleware Multer pour télécharger la photo côté serveur.
post req à notre base de données
la source
À votre avis:
Avec ce code, vous pouvez ajouter des images uniques ou multiples dans MongoDB.
la source
Cela a fonctionné pour moi,
la source