webentwicklung-frage-antwort-db.com.de

Speichern Sie Bilder in einer MongoDB-Datenbank

Wie kann ich Bilder in einer MongoDB-Datenbank speichern, anstatt nur Text? Kann ich eine Reihe von Bildern in einer MongoDB-Datenbank erstellen? Wird es möglich sein, dasselbe für Videos zu tun?

154
Chani

Weitere Informationen zum Speichern solcher Binärdaten finden Sie in den GridFS - Dokumenten.

Die Unterstützung für Ihre spezifische Sprache sollte am unteren Rand des Bildschirms verlinkt sein.

93
Gates VP

"Sie sollten GridFS immer zum Speichern von Dateien verwenden, die größer als 16 MB sind" - Wann sollte ich GridFS verwenden?

MongoDB BSON-Dokumente sind auf 16 MB begrenzt. Wenn also die Gesamtgröße Ihres Array von Dateien geringer ist, können Sie sie mit dem Datentyp BinData direkt in Ihrem Dokument speichern.

Videos, Bilder, PDFs, Tabellenkalkulationen usw. - egal, sie werden alle gleich behandelt. Es liegt an Ihrer Anwendung, einen geeigneten Inhaltstyp-Header zurückzugeben, um sie anzuzeigen.

Weitere Informationen finden Sie in der GridFS-Dokumentation .

58
Mike Causer

Sie können dies versuchen:

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

http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb

Auf NPM gibt es ein Mongoose-Plugin namens mongoose-file. Damit können Sie einem Mongoose-Schema ein Dateifeld zum Hochladen von Dateien hinzufügen. Ich habe es nie benutzt, aber es könnte sich als nützlich erweisen. Wenn die Bilder sehr klein sind, können Sie sie mit Base64 codieren und die Zeichenfolge in der Datenbank speichern.

Speichern einiger kleiner (unter 1 MB) Dateien mit MongoDB in NodeJS WITHOUT GridFS

11
Mick Cullen

Sie können den bin-Datentyp verwenden, wenn Sie eine Skriptsprache zum Speichern von Dateien/Bildern in MongoDB verwenden. Bin-Daten werden entwickelt, um kleine Dateien zu speichern.

Wenden Sie sich an Ihren Skriptsprachtreiber. Klicken Sie für PHP auf hier .

6
Tharindu

installieren Sie unter Bibliotheken

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

verbinde deine mongo db:

mongoose.connect(‘url_here’);

Datenbankschema definieren

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

verwenden Sie die Middleware Multer, um das Foto auf der Serverseite hochzuladen.

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

post-Anfrage an unsere 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();
});
4
Samkit Shah
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);
   }
});

Ihrer Ansicht nach:

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

Mit diesem Code können Sie sowohl einzelne als auch mehrere Bilder in MongoDB hinzufügen.

3
AshvinG