Yanıtlar:
Bu tür ikili verilerin depolanmasıyla ilgili ayrıntılar için lütfen GridFS belgelerine bakın .
Özel dil desteği ekranın alt kısmına bağlanmalıdır.
"16 MB'tan büyük dosyaları saklamak için her zaman GridFS kullanmalısınız" - Ne zaman GridFS kullanmalıyım?
MongoDB BSON belgeleri 16 MB ile sınırlıdır . Dolayısıyla, dosya dizinizin toplam boyutu bundan küçükse , BinData veri türünü kullanarak bunları doğrudan belgenizde saklayabilirsiniz .
Videolar, resimler, PDF'ler, elektronik tablolar vb. - önemli değil, hepsine aynı şekilde davranılıyor. Bunları görüntülemek için uygun bir içerik türü başlığı döndürmek uygulamanıza bağlıdır.
Check out GridFS belgelerine fazla ayrıntı için.
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
NPM'de mongoose dosyası adı verilen bir Mongoose eklentisi vardır. Dosya yüklemesi için Mongoose Şemasına bir dosya alanı eklemenizi sağlar. Hiç kullanmadım ama faydalı olabilir. Görüntüler çok küçükse, Base64 bunları kodlayabilir ve dizeyi veritabanına kaydedebilirsiniz.
GridFS OLMADAN NodeJS'de bazı küçük (1MB'nin altında) dosyaları MongoDB ile saklama
kitaplıkların altına yükle
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
ur mongo db bağlayın:
mongoose.connect(‘url_here’);
Veritabanı Şemasını Tanımlama
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
fotoğrafı sunucu tarafına yüklemek için orta katman yazılımı Multer'ı kullanın.
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
sonrası bizim db req
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);
}
});
Sizce:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
Bu kodla MongoDB'ye tekli ve çoklu görüntüler ekleyebilirsiniz.
Bu benim için çalıştı,
base64, bkz stackoverflow.com/questions/11442356 da buldum menge.io/2015/03/24/storing-small-images-in- mongodb çok iyi bir başlangıç noktası.