একটি মঙ্গোডিবি ডাটাবেসে চিত্রগুলি সঞ্চয় করুন


174

আমি কীভাবে কেবল পাঠ্যের চেয়ে মংগোডিবি ডাটাবেসে চিত্রগুলি সঞ্চয় করতে পারি? আমি কি মঙ্গোডিবি ডাটাবেসে চিত্রের একটি অ্যারে তৈরি করতে পারি? ভিডিওগুলির জন্যও কি এটি করা সম্ভব হবে?


1
সংক্ষিপ্ত উত্তর হয়: হ্যাঁ, আপনি (ছোট) চিত্র যদি আপনার সাথে সঠিকভাবে তাদের এনকোড সংরক্ষণ করতে পারেন base64, দেখুন stackoverflow.com/questions/11442356 আমিও পাওয়া menge.io/2015/03/24/storing-small-images-in- mongodb একটি খুব ভাল সূচনা পয়েন্ট।
বি - রায়ান

উত্তর:


108

এই জাতীয় বাইনারি ডেটা সংরক্ষণের বিশদগুলির জন্য দয়া করে গ্রিডেফএস ডক্স দেখুন ।

আপনার নির্দিষ্ট ভাষার জন্য সমর্থন পর্দার নীচে লিঙ্ক করা উচিত।


40
গ্রিডএফএস নথিগুলির জন্য> 16 এমবি। সমস্ত বাইনারি ডেটা এই বড় নয়। এই সীমাটি অতিক্রম করতে সক্ষম হওয়া ব্যতীত, বিনডাটা টাইপের পরিবর্তে গ্রিডএফএস ব্যবহারের অন্য কোনও সুবিধা আছে কি?
ব্র্যান্ডন ফিটজপ্যাট্রিক

3
ভিডিওগুলি 16 এমবি হতে থাকে তাই এই উত্তরটি সম্ভবত যুক্তিসঙ্গত। সম্ভবত এটি উল্লেখ করা উচিত।
চানোচ

1
অন্য কোন সমাধান, বরং গ্রিডএফএস ব্যবহার করে?
অভিষেক মণি

1
@ অভিষেকমানি এর অন্য সমাধানটি মোটেও মঙ্গোবিবিতে সংরক্ষণ করা নয়। এখন, 2018 এ, অ্যামাজনের এস 3 বা অ্যাজুরি বিএলওবি স্টোরেজের মতো কিছুতে এই ডেটাটি লেখা অসীম সহজ।
গেটস ভিপি

আমি মনে করি
মঙ্গোডিবি

64

"16MB এর চেয়ে বড় ফাইলগুলি সংরক্ষণ করার জন্য আপনার সর্বদা গ্রিডএফএস ব্যবহার করা উচিত" - আমি গ্রিডএফএস কখন ব্যবহার করব?

MongoDB BSON কাগজপত্র 16 মেগাবাইট এ লাভের হয়। সুতরাং আপনার ফাইলগুলির অ্যারের মোট আকার যদি এর চেয়ে কম হয় তবে আপনি বিনডাটা ডেটা টাইপ ব্যবহার করে এগুলি সরাসরি আপনার দস্তাবেজে সংরক্ষণ করতে পারেন ।

ভিডিও, চিত্র, পিডিএফ, স্প্রেডশিট ইত্যাদি it এতে কিছু আসে যায় না, এগুলি সমস্ত একইরকম হয়। এগুলি প্রদর্শনের জন্য উপযুক্ত কন্টেন্ট টাইপের শিরোনাম ফিরিয়ে দেওয়া আপনার আবেদনের উপর নির্ভর করে।

পরীক্ষা করে দেখুন GridFS ডকুমেন্টেশন আরো বিস্তারিত জানার জন্য।


24

আপনি এটি চেষ্টা করতে পারেন:

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

13

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

এনপিএম-তে একটি মঙ্গুজ প্লাগইন রয়েছে যা মঙ্গুজ-ফাইল নামে পরিচিত। এটি আপনাকে ফাইল আপলোডের জন্য একটি মঙ্গুজ স্কিমাতে একটি ফাইল ক্ষেত্র যুক্ত করতে দেয়। আমি এটি কখনও ব্যবহার করি নি তবে এটি কার্যকর প্রমাণ হতে পারে। ছবিগুলি খুব ছোট হলে আপনি বেস 64 এগুলিকে এনকোড করতে পারেন এবং স্ট্রিংটি ডাটাবেসে সংরক্ষণ করতে পারেন।

গ্রিডেএস ব্যতীত নোডজেএস-এ কিছু ছোট (1MB এর নীচে) ফাইল সংরক্ষণ করা হচ্ছে


8

আপনি মংগোডিবিতে ফাইল / চিত্রগুলি সংরক্ষণ করতে কোনও স্ক্রিপ্টিং ভাষা ব্যবহার করছেন যদি আপনি বিন ডেটা টাইপ ব্যবহার করতে পারেন। ছোট আকারের ফাইল সংরক্ষণের জন্য বিন ডেটা তৈরি করা হয়।

আপনার স্ক্রিপ্টিং ভাষা ড্রাইভার পড়ুন। পিএইচপি জন্য, এখানে ক্লিক করুন


6

লাইব্রেরির নীচে ইনস্টল করুন

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();
});

স্যার আমি কি যদি
নিখিল পাতিল

3
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">

এই কোডের সাহায্যে আপনি মঙ্গোডিবিতে একক পাশাপাশি একাধিক চিত্র যুক্ত করতে পারেন।


0

এটি আমার পক্ষে কাজ করেছে,

  1. সিএমডি-তে এই ডিরেক্টরিতে যান: - সি: \ প্রোগ্রাম ফাইলগুলি \ মঙ্গোডিবি \ সার্ভার \ 4.0 \ বিন
  2. নিম্নলিখিত কমান্ডটি কার্যকর করুন: - মঙ্গোফাইলগুলি image.jpg রাখুন
  3. আমরা যে ফাইলগুলি ব্যবহার করি তা নির্বাচন করার জন্য: - db.fs.files.find. ব্যাখ্যাty ()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.