Almacenar imágenes en una base de datos MongoDB

¿Cómo puedo almacenar imágenes en una base de datos MongoDB en lugar de solo texto? ¿Puedo crear una matriz de imágenes en una base de datos MongoDB? ¿Será posible hacer lo mismo para los videos?

Consulte los documentos de GridFS para obtener detalles sobre el almacenamiento de dichos datos binarios.

El soporte para su idioma específico debe estar vinculado a en la parte inferior de la pantalla.

“Siempre debe usar GridFS para almacenar archivos de más de 16 MB” – ¿ Cuándo debería usar GridFS?

Los documentos MongoDB BSON tienen un límite de 16 MB. Entonces, si el tamaño total de su matriz de archivos es menor que eso, puede almacenarlos directamente en su documento utilizando el tipo de datos BinData .

Videos, imágenes, archivos PDF, hojas de cálculo, etc., no importa, todos son tratados de la misma manera. Depende de su aplicación devolver un encabezado de tipo de contenido apropiado para mostrarlos.

Consulte la documentación de GridFS para más detalles.

Puedes probar este:

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

http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb

Hay un plugin Mongoose disponible en NPM llamado mongoose-file. Le permite agregar un campo de archivo a un esquema de Mongoose para cargar archivos. Nunca lo he usado, pero podría ser útil. Si las imágenes son muy pequeñas, puede Base64 codificarlas y guardarlas en la base de datos.

Almacenar algunos archivos pequeños (menos de 1 MB) con MongoDB en NodeJS SIN GridFS

Puede usar el tipo de datos bin si está utilizando cualquier lenguaje de scripting para almacenar archivos / imágenes en MongoDB. Bin data está desarrollado para almacenar archivos de pequeño tamaño.

Consulte su controlador de lenguaje de scripting. Para PHP, haga clic aquí .

 var upload = multer({dest: "./uploads"}); var mongo = require('mongodb'); var Grid = require("gridfs-stream"); Grid.mongo = mongo; router.post('/:id', upload.array('photos', 200), function(req, res, next){ gfs = Grid(db); var ss = req.files; for(var j=0; j 

En su opinión:

 

Con este código, puede agregar imágenes únicas y múltiples en MongoDB.

instalar debajo de las bibliotecas

 var express = require('express'); var fs = require('fs'); var mongoose = require('mongoose'); var Schema = mongoose.Schema; var multer = require('multer'); 

conecta tu mongo db:

 mongoose.connect('url_here'); 

Definir esquema de base de datos

 var Item = new ItemSchema( { img: { data: Buffer, contentType: String } } ); var Item = mongoose.model('Clothes',ItemSchema); 

usando el middleware Multer para cargar la foto en el lado del servidor.

 app.use(multer({ dest: './uploads/', rename: function (fieldname, filename) { return filename; }, })); 

post req a nuestro db

 app.post('/api/photo',function(req,res){ var newItem = new Item(); newItem.img.data = fs.readFileSync(req.files.userPhoto.path) newItem.img.contentType = 'image/png'; newItem.save(); });