Cum pot stoca imagini într-o bază de date MongoDB, mai degrabă decât doar text? Pot crea o serie de imagini într-o bază de date MongoDB? Va fi posibil să facă același lucru pentru videoclipuri?
"ar trebui să folosiți întotdeauna GridFS pentru stocarea de fișiere mai mari de 16MB" - Când trebuie să folosesc GridFS?
MongoDB BSON documente sunt plafonate la 16 MB. Deci, dacă dimensiunea totală de matrice de fișiere este mai mică decât că, puteți să le stocați direct în document utilizând BinData tip de date.
Videoclipuri, imagini, Pdf-uri, foi de calcul, etc. - nu't contează, toate sunt tratate la fel. L's până la cererea dvs. de a returna un conținut adecvat tipului de antet pentru a le afișa.
Check out GridFS documentația pentru mai multe detalii.
Puteți încerca asta:
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
Există o Mangustă plugin disponibil pe NPM numit mongoose-fișier. Acesta vă permite să adăugați un fișier de teren pentru o Mangustă Schema pentru upload de fișiere. Nu am folosit niciodată, dar s-ar putea dovedi utile. Dacă imaginile sunt foarte mici, ai putea Base64 encode-le și de a salva șir la baza de date.
Puteți utiliza coșul de gunoi tip de date dacă utilizați orice limbaj de scripting pentru a stoca fișiere/imagini în MongoDB. Bin date este dezvoltat pentru a stoca mici dimensiuni de fișiere.
Se referă la limbaj de scripting driver. Pentru PHP, click aici.
instala biblioteci de mai jos
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
conectați ur mongo db :
mongoose.connect(‘url_here’);
Definirea Schemei bazei de date
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
folosind middleware Multer să încărcați fotografia pe partea de server.
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
post req noastre 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);
}
});
În opinia dvs.:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
Cu acest cod puteți adăuga unice, precum și mai multe imagini în MongoDB.
Aceasta a lucrat pentru mine,