insertar - subir imagenes a mongodb
Almacenar imágenes en una base de datos MongoDB (7)
¿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?
"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.
La mejor manera de guardar la imagen en nodejs Backend - Profesional recomendado
var async = require(''async'');
var accessPath = path.join(__dirname, "../uploadLocation");
var folderName = new Date().getTime();
async.auto({
makeDir: function(next, results) {
makeDir(accessPath, folderName, next);
},
writeFile: [''makeDir'', function(next, results) {
writeFile(accessPath, folderName, req.body.user.ImgData, req.body.user.email, next);
}],
}, function(err, success) {
if (err) {
console.log("error occurs while saving image")
} else {
console.log("success", success)
}
});
var makeDir = function(accessPath, folderName, next) {
try {
console.log("accessPath inside makeDir", accessPath, folderName)
fs.mkdirSync(accessPath + "/upload/user/" + folderName);
next(null, "done")
} catch (e) {
console.log("error in creating folder");
next(e, "Err")
}
}
var writeFile = function(accessPath, folderName, ImgData, email, next) {
var userImgName = email + ".jpg";
fs.writeFile(accessPath + "/upload/user/" + folderName + "/" + userImgName, ImgData, function(err, success) {
if (err) {
next(e, "Err")
} else {
console.log("success write file");
next(null, null);
}
});
}
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.
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 here .
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
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 su opinión:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
Con este código, puede agregar imágenes únicas y múltiples en MongoDB.