जवाबों:
ऐसे बाइनरी डेटा को संग्रहीत करने के विवरण के लिए कृपया ग्रिड्स डॉक्स देखें।
आपकी विशिष्ट भाषा के लिए समर्थन स्क्रीन के नीचे से जुड़ा होना चाहिए।
"आपको हमेशा 16 एमबी से बड़ी फ़ाइलों को संग्रहीत करने के लिए ग्रिड्स का उपयोग करना चाहिए " - मुझे ग्रिड्स का उपयोग कब करना चाहिए?
MongoDB BSON दस्तावेज़ 16 MB पर छाया हुआ है। इसलिए यदि आपकी फ़ाइलों का कुल आकार उससे कम है, तो आप उन्हें सीधे अपने दस्तावेज़ में BinData डेटा प्रकार का उपयोग करके संग्रहीत कर सकते हैं ।
वीडियो, चित्र, पीडीएफ, स्प्रेडशीट, आदि - यह कोई फर्क नहीं पड़ता, वे सभी एक ही व्यवहार कर रहे हैं। उन्हें प्रदर्शित करने के लिए एक उपयुक्त सामग्री प्रकार हेडर वापस करना आपके आवेदन पर निर्भर है।
की जाँच करें GridFS प्रलेखन अधिक जानकारी के लिए।
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
एक Mongoose प्लगइन है जो NPM पर उपलब्ध है जिसे mongoose-file कहा जाता है। यह आपको फ़ाइल अपलोड के लिए मानगो स्कीमा में एक फ़ाइल फ़ील्ड जोड़ने देता है। मैंने कभी इसका उपयोग नहीं किया है लेकिन यह उपयोगी साबित हो सकता है। यदि छवियां बहुत छोटी हैं, तो आप बेस 64 को इनकोड कर सकते हैं और स्ट्रिंग को डेटाबेस में सहेज सकते हैं।
ग्रिड के बिना NodeJS में MongoDB के साथ कुछ छोटी (1MB से कम) फ़ाइलों को संग्रहीत करना
पुस्तकालयों के नीचे स्थापित करें
var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer');
कनेक्ट उर मोंगो डीबी:
mongoose.connect(‘url_here’);
डेटाबेस स्कीमा को परिभाषित करें
var Item = new ItemSchema(
{ img:
{ data: Buffer, contentType: String }
}
);
var Item = mongoose.model('Clothes',ItemSchema);
सर्वर साइड पर फोटो अपलोड करने के लिए मिडलवेयर मुल्टर का उपयोग करना।
app.use(multer({ dest: ‘./uploads/’,
rename: function (fieldname, filename) {
return filename;
},
}));
हमारे डीबी को पोस्ट करें
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);
}
});
आपके विचार में:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
इस कोड के साथ आप MongoDB में एकल और साथ ही कई चित्र जोड़ सकते हैं।
इसने मेरे लिए काम किया,
base64
हैं, तो देखें stackoverflow.com/questions/11442356 मैंने भी menge.io/2015/03/24/storing-small-images-in- एक बहुत अच्छा प्रारंभिक बिंदु mongodb ।