194 votes

stocker les images dans une base de données mongo

comment puis-je stocker des images dans une base de données mongo plutôt que du texte. puis-je créer un tableau d'images dans une base de données mongo. sera-t-il possible de faire de même pour les vidéos ?

2 votes

La réponse courte est : Oui, vous pouvez stocker des (petites) images si vous les codez correctement à l'aide de la fonction base64 voir stackoverflow.com/questions/11442356 J'ai aussi trouvé menge.io/2015/03/24/stockage-de-petites-images-dans-mongodb un très bon point de départ.

126voto

Gates VP Points 26481

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

Le support pour votre langue spécifique devrait être lié au bas de l'écran.

49 votes

GridFS est pour les documents > 16MB. Toutes les données binaires ne sont pas de cette taille. Outre la possibilité de dépasser cette limite, y a-t-il d'autres avantages à utiliser GridFS au lieu du seul type BinData ?

4 votes

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

1 votes

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

72voto

Mike Causer Points 2919

"Vous devriez toujours utiliser GridFS pour stocker des fichiers d'une taille supérieure à 16MB" - Quand dois-je utiliser GridFS ?

MongoDB Documents BSON sont plafonnés à 16 Mo. Ainsi, si la taille totale de votre tableau de fichiers est inférieure à cette limite, vous pouvez les stocker directement dans votre document à l'aide de la commande Données BinData type de données.

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 le Documentation de GridFS pour plus de détails.

26voto

victoriza Points 124

Bonjour, vous pouvez essayer celui-ci :

String newFileName = "my-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 il pourrait s'avérer utile. Si les images sont très petites, vous pouvez les coder en Base64 et enregistrer la chaîne dans la base de données.

Stockage de quelques petits fichiers (moins de 1 Mo) avec MongoDB en NodeJS SANS GridFS

9voto

Andreas Jung Points 1

Consultez la documentation 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