204 votes

Stockez les images dans une base de données MongoDB

Comment puis-je stocker des images dans une base de données MongoDB plutôt que simplement 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 des vidéos ?

2 votes

La réponse courte est : Oui, vous pouvez stocker (de petites) images si vous les encodez correctement avec 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.

132voto

Gates VP Points 26481

Veuillez consulter la documentation sur GridFS pour plus de détails sur le stockage de telles données binaires.

Le support de votre langue spécifique doit être lié en bas de l'écran.

52 votes

GridFS est destiné aux documents de plus de 16 Mo. Toutes les données binaires ne sont pas aussi volumineuses. Mis à part la possibilité de dépasser cette limite, y a-t-il d'autres avantages à utiliser GridFS à la place du type BinData?

6 votes

Les vidéos auront tendance à être> 16 Mo, donc cette réponse est probablement raisonnable. Il faudrait peut-être le mentionner cependant.

1 votes

Toute autre solution, plutôt que d'utiliser GridFS?

75voto

Mike Causer Points 2919

"Vous devriez toujours utiliser GridFS pour stocker des fichiers de plus de 16 Mo" - Quand devrais-je utiliser GridFS?

Les documents BSON de MongoDB 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 sur GridFS pour plus de détails.

26voto

victoriza Points 124

Vous pouvez essayer celui-ci :

String newFileName = "mon-image";
File imageFile = new File("/users/victor/images/image.png");
GridFS gfsPhoto = new GridFS(db, "photo");
GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
gfsFile.setFilename(newFileName);
gfsFile.save();

14voto

Mick Cullen Points 326

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.

Enregistrer certains fichiers petits (moins de 1 Mo) avec MongoDB en NodeJS SANS GridFS

9voto

Andreas Jung Points 1

Vérifiez la documentation de MongoDB pour "GridFS"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X