উত্তর:
এই জাতীয় বাইনারি ডেটা সংরক্ষণের বিশদগুলির জন্য দয়া করে গ্রিডেফএস ডক্স দেখুন ।
আপনার নির্দিষ্ট ভাষার জন্য সমর্থন পর্দার নীচে লিঙ্ক করা উচিত।
"16MB এর চেয়ে বড় ফাইলগুলি সংরক্ষণ করার জন্য আপনার সর্বদা গ্রিডএফএস ব্যবহার করা উচিত" - আমি গ্রিডএফএস কখন ব্যবহার করব?
MongoDB BSON কাগজপত্র 16 মেগাবাইট এ লাভের হয়। সুতরাং আপনার ফাইলগুলির অ্যারের মোট আকার যদি এর চেয়ে কম হয় তবে আপনি বিনডাটা ডেটা টাইপ ব্যবহার করে এগুলি সরাসরি আপনার দস্তাবেজে সংরক্ষণ করতে পারেন ।
ভিডিও, চিত্র, পিডিএফ, স্প্রেডশিট ইত্যাদি it এতে কিছু আসে যায় না, এগুলি সমস্ত একইরকম হয়। এগুলি প্রদর্শনের জন্য উপযুক্ত কন্টেন্ট টাইপের শিরোনাম ফিরিয়ে দেওয়া আপনার আবেদনের উপর নির্ভর করে।
পরীক্ষা করে দেখুন GridFS ডকুমেন্টেশন আরো বিস্তারিত জানার জন্য।
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
এনপিএম-তে একটি মঙ্গুজ প্লাগইন রয়েছে যা মঙ্গুজ-ফাইল নামে পরিচিত। এটি আপনাকে ফাইল আপলোডের জন্য একটি মঙ্গুজ স্কিমাতে একটি ফাইল ক্ষেত্র যুক্ত করতে দেয়। আমি এটি কখনও ব্যবহার করি নি তবে এটি কার্যকর প্রমাণ হতে পারে। ছবিগুলি খুব ছোট হলে আপনি বেস 64 এগুলিকে এনকোড করতে পারেন এবং স্ট্রিংটি ডাটাবেসে সংরক্ষণ করতে পারেন।
গ্রিডেএস ব্যতীত নোডজেএস-এ কিছু ছোট (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">
এই কোডের সাহায্যে আপনি মঙ্গোডিবিতে একক পাশাপাশি একাধিক চিত্র যুক্ত করতে পারেন।
এটি আমার পক্ষে কাজ করেছে,
base64
, দেখুন stackoverflow.com/questions/11442356 আমিও পাওয়া menge.io/2015/03/24/storing-small-images-in- mongodb একটি খুব ভাল সূচনা পয়েন্ট।