Respuestas:
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 en la parte inferior de la pantalla.
"Siempre debe usar GridFS para almacenar archivos de más de 16 MB" - ¿ Cuándo debo 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, PDF, hojas de cálculo, etc., no importa, todos reciben el mismo trato. Depende de su aplicación devolver un encabezado de tipo de contenido apropiado para mostrarlos.
Consulte la documentación de GridFS para obtener más detalles.
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
Hay un complemento Mongoose disponible en NPM llamado mongoose-file. Le permite agregar un campo de archivo a un esquema de mangosta para cargar archivos. Nunca lo he usado, pero podría resultar útil. Si las imágenes son muy pequeñas, podría codificarlas en Base64 y guardar la cadena en la base de datos.
Almacenar algunos archivos pequeños (de menos de 1 MB) con MongoDB en NodeJS SIN GridFS
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();
});
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<ss.length; j++){
var originalName = ss[j].originalname;
var filename = ss[j].filename;
var writestream = gfs.createWriteStream({
filename: originalName
});
fs.createReadStream("./uploads/" + filename).pipe(writestream);
}
});
En tu opinión:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
Con este código, puede agregar imágenes individuales y múltiples en MongoDB.
Esto funcionó para mí
base64
, consulte stackoverflow.com/questions/11442356 También encontré menge.io/2015/03/24/storing-small-images-in- mongodb un muy buen punto de partida.