Guardar as imagens numa base de dados do MongoDB

Como posso armazenar imagens numa base de dados MongoDB em vez de apenas texto? Posso criar uma série de imagens em uma base de dados MongoDB? Será possível fazer o mesmo para vídeos?

Author: Community, 2011-01-25

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ã.

 80
Author: Gates VP, 2011-01-25 23:54:34

"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.

 49
Author: Mike Causer, 2017-07-25 08:38:17
Pode tentar 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();
 15
Author: victoriza, 2017-07-25 08:38:38

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

 10
Author: Mick Cullen, 2017-05-23 12:10:31

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.

 5
Author: Tharindu, 2017-07-25 08:39:34
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.

 3
Author: AshvinG, 2017-07-25 08:40:20

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();
});
 0
Author: Samkit Shah, 2018-08-28 12:19:02