Respostas:
Consulte os documentos do GridFS para obter detalhes sobre como armazenar esses dados binários.
O suporte para o seu idioma específico deve estar vinculado na parte inferior da tela.
"Você sempre deve usar o GridFS para armazenar arquivos maiores que 16 MB" - Quando devo usar o GridFS?
Os documentos do MongoDB BSON são limitados a 16 MB. Portanto, se o tamanho total da sua matriz de arquivos for menor que isso, você poderá armazená-los diretamente no seu documento usando o tipo de dados BinData .
Vídeos, imagens, PDFs, planilhas etc. - não importa, todos são tratados da mesma forma. Cabe ao seu aplicativo retornar um cabeçalho de tipo de conteúdo apropriado para exibi-los.
Confira a documentação do GridFS para mais detalhes.
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
Existe um plug-in do Mongoose disponível no NPM chamado mongoose-file. Permite adicionar um campo de arquivo a um esquema do Mongoose para upload de arquivos. Eu nunca o usei, mas pode ser útil. Se as imagens forem muito pequenas, você poderá codificá-las pelo Base64 e salvar a sequência no banco de dados.
Armazenando alguns arquivos pequenos (abaixo de 1 MB) com o MongoDB no NodeJS SEM GridFS
instalar abaixo das bibliotecas
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
conecte seu mongo db:
mongoose.connect(‘url_here’);
Definir esquema do banco de dados
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
usando o middleware Multer para fazer upload da foto no lado do servidor.
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
pós req para o nosso 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);
}
});
Na sua opinião:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
Com esse código, você pode adicionar imagens únicas e múltiplas no MongoDB.
Isso funcionou para mim,
base64
, consulte stackoverflow.com/questions/11442356 Também encontrei menge.io/2015/03/24/storing-small-images-in- mongodb é um excelente ponto de partida.