Guardar as imagens numa base de dados do MongoDB
7 answers
Por favor veja os documentos para mais detalhes sobre o armazenamento desses dados binários.
O Suporte para a sua língua específica deve estar ligado à parte inferior do ecrã.
"deve sempre usar GridFS para armazenar ficheiros superiores a 16MB" - Quando devo usar GridFS?
MongoDB os documentos bson têm um limite máximo de 16 MB. Por isso, se o tamanho total da sua lista de ficheiros for inferior a isso, poderá armazená-los directamente no seu documento, usando o tipo de Dados BinData.
Vídeos, imagens, PDFs, folhas de cálculo, etc. - não importa, são todos tratados da mesma maneira. Cabe à sua candidatura devolver um cabeçalho do tipo de conteúdo apropriado para os Mostrar.
Veja a documentaçãodos GridFS para mais detalhes.
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
Existe um 'plugin' de Mangusto disponível no MPN chamado ficheiro mangusto. Permite-lhe adicionar um campo de ficheiro a um esquema de Mangusto para o envio de ficheiros. Nunca o usei, mas pode ser útil. Se as imagens são muito pequenas, você pode codificá-las Base64 e salvar o texto para a base de dados.
Guardar alguns ficheiros pequenos (com menos de 1MB) com o MongoDB em NodeJS sem GridFS
Pode usar o tipo de dados do bin se estiver a usar qualquer linguagem de programação para guardar ficheiros/imagens no MongoDB. Os dados do Bin são desenvolvidos para armazenar o tamanho pequeno dos arquivos.
Consulte o seu controlador de linguagem de programação. Para PHP, clique em aqui.
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 este código pode adicionar imagens simples e múltiplas em MongoDB.
Instalar abaixo das bibliotecas
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
Ligar ur mongo db:
mongoose.connect(‘url_here’);
Defina o esquema da base de dados
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
A usar o Multer de middleware para enviar a fotografia do lado do servidor.
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
Post 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();
});