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

رفع فيديو في تطبيق node js & mongodb

Ali Shouaa

السؤال

Recommended Posts

  • 0

يمكنك استخدام حزمة multer لرفع الملفات (منها الفيديو)

حيث عليك تثبيت الحزمة

npm install --save multer

وتضمينها
const multer = require('multer');

ثم تعريف الدوال التي تقوم بالرفع.

أولاً تعريف مسار رفع الفيديو:

router.post('/uploadVideo', videoUpload.single('video'), (req, res) => {

	// نحفظ الملف

}, (error, req, res, next) => {
	// خطأ
    res.status(400).send({ error: error.message })
})

ثانياً تعريف دالة المتحكم لمعالجة الملف middleware

const videoUpload = multer({
     storage: videoStorage,
     limits: {
     fileSize: 10000000 // 10000000 Bytes = 10 MB
     },
     fileFilter(req, file, cb) {
       // تحديد أنواع الملفات الممكنة mp4 and mkv format
       if (!file.originalname.match(/\.(mp4|MPEG-4|mkv)$/)) { 
          return cb(new Error('الملف المرفق ليس ملف فيديو أو ليس مدعوم من المخدم'))
       }
       cb(undefined, true)
    }
})

ثالثاً حفظ الملف على المخدم ضمن نظام الملفات

const videoStorage = multer.diskStorage({
     destination: 'videos',                // مسار مجلد حفظ الفيديو
     filename: (req, file, cb) => {        // اسم الملف
         
		cb(null, file.fieldname + '_' + Date.now()  + path.extname(file.originalname))
     }
});

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

أضف منطق حفظ الرابط في قاعدة بيانات mongo

ضمن front end نستخدم multipart/form-data مع الطريقة POST , ونعطي اسم للحقل.

<form method="post" action="/uploadVideo" enctype="multipart/form-data">
    <input type="file" name="videoFile"><br>
    <input type="submit" value="Submit">
</form>

يمكنك الاعتماد على الأفكار من رفع صورة من السؤال:

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...