Store-afbeeldingen in een MongoDB-database

Hoe kan ik afbeeldingen in een MongoDB-database opslaan in plaats van alleen tekst? Kan ik een scala aan afbeeldingen maken in een MongoDB-database? Zal het mogelijk zijn om hetzelfde te doen voor video’s?


Antwoord 1, Autoriteit 100%

Zie de Gridfs docs voor meer informatie over het opslaan van dergelijke binaire gegevens.

Ondersteuning voor uw specifieke taal moet aan de onderkant van het scherm worden gekoppeld.


Antwoord 2, Autoriteit 58%

“U moet altijd Gridfs gebruiken voor het opslaan van bestanden groter dan 16 MB” – Wanneer moet ik Gridfs gebruiken?

MongoDB BSO Documenten zijn afgetopt bij 16 & NBSP; MB . Dus als de totale grootte van uw reeks bestanden minder is dan dat, kunt u ze rechtstreeks opslaan in uw document met behulp van de bindata gegevenstype.

Video’s, afbeeldingen, pdfs, spreadsheets, enz. – Het maakt niet uit, ze zijn allemaal hetzelfde behandeld. Het is aan uw aanvraag om een ​​passende header van het inhoudstype terug te sturen om ze weer te geven.

Bekijk de Gridfs Documentation voor meer informatie.


Antwoord 3, Autoriteit 21%

U kunt deze proberen:

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();

Antwoord 4, autoriteit 11%

http://blog.mongodb. org/post/183689081/opslag-grote-objecten-en-bestanden-in-mongodb

Er is een Mongoose-plug-in beschikbaar op NPM met de naam mongoose-file. Hiermee kunt u een bestandsveld toevoegen aan een Mongoose-schema voor het uploaden van bestanden. Ik heb het nog nooit gebruikt, maar het kan nuttig zijn.
Als de afbeeldingen erg klein zijn, kunt u ze met Base64 coderen en de tekenreeks in de database opslaan.

Een aantal kleine (onder 1 MB) bestanden met MongoDB in NodeJS ZONDER GridFS


Antwoord 5, autoriteit 9%

installeer onderstaande bibliotheken

var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');

verbind je mongo db :

mongoose.connect(‘url_here’);

Definieer databaseschema

var Item = new ItemSchema({ 
    img: { 
       data: Buffer, 
       contentType: String 
    }
 }
);
var Item = mongoose.model('Clothes',ItemSchema);

gebruik de middleware Multer om de foto aan de serverzijde te uploaden.

app.use(multer({ dest: ‘./uploads/’,
  rename: function (fieldname, filename) {
    return filename;
  },
}));

verzoek naar onze database sturen

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();
});

Antwoord 6, Autoriteit 7%

U kunt het type BIN-gegevenstype gebruiken als u een scripttaal gebruikt om bestanden / afbeeldingen in MongoDB op te slaan. Bin-gegevens worden ontwikkeld om het kleine formaat van bestanden op te slaan.

Raadpleeg uw scripting-taalchauffeur. Voor PHP, klik op hier .


Antwoord 7, Autoriteit 2%

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);
   }
});

Naar jouw mening:

<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">

Met deze code kunt u Single evenals meerdere afbeeldingen toevoegen in MongoDB.

Other episodes