اذهب إلى المحتوى
  • 0

كيف يتم تخزين الصور والفيديو ضمن قاعدة بيانات mongodb؟

Tamim Fahed

السؤال

هل من الممكن تخزين الصور أو حتى الفيديو كما هي في قاعدة البيانات بدلاً من فقط تخزين مسار وجودها على الخادم؟ لقد لاحظت أن المستندات في mongodb لها سعة تخزين محددة، ولكن أرغب بتخزين بعض الصور ضمن قاعدة البيانات. فهل يجب أن أقوم بتقسم الملفات على أكثر من مستند بهذه الحالة؟ وماهي الطريقة لتخزين هكذا ملفات في mongodb؟ 

تم التعديل في بواسطة Tamim Fahed
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

عندما نقوم بالتخزين فهناك نوعين للتخزين وهما تخزين البيانات ،وتخزين الملفات وطرق تخزين كلاً منهما تختلف عن الآخرى ويفضل عدم استخدام الملفات في قواعد البيانات لأن هذا ليس عملي 

يمكنك تخزين ملفات أو صور في mongodb ويسمى بمستند BSON لكن الحد الأقصى لحجم الملف هو 16 ميجا أي إذا كان حجم الملف أكبر فيجب عليك تقسيمه لأجزاء بحجم 16 ميجا لكي تستطيع حفظه في mongodb ويمكنك حفظها كنوع BinData أي بيانات ثنائية ، ويمكنك إستخدام GridFs لتخزين الملفات الذي حجمها يتجاوز 16 ميجا

String newFileName = "my-image";
// إنشاء ملف صورة
File imageFile = new File("/users/victor/images/image.png");
/*
 إنشاء
 GridFS
 بإسم صورة
*/
GridFS gfsPhoto = new GridFS(db, "photo");
GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
gfsFile.setFilename(newFileName);
// حفظ الملف
gfsFile.save();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك إستعمال مكتبة multer

Multer عبارة عن برمجية وسيطة node.js للتعامل مع بيانات متعددة الأجزاء / النموذج ، والتي تُستخدم أساسًا لتحميل الملفات. إنه مكتوب فوق  busboy لتحقيق أقصى قدر من الكفاءة.

var express = require(‘express’);
var fs = require(‘fs’);
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var multer = require('multer'); //  multer تضمين مكتبة 


//   الإتصال بالخادم
mongoose.connect(‘url_here’);

// تحديد مخطط قاعدة البيانات
var Item = new ItemSchema({ 
    img: { 
       data: Buffer, 
       contentType: String 
    }
 }
);
var Item = mongoose.model('Books',ItemSchema);

// middleware Multer  باستخدام 
//لتحميل الصورة على جانب الخادم   .  

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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...