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

السؤال

نشر

انا ارفع الملفات باستخدام multer وحفظها في ملف uploads داخل ملفات ال backend node.js
ورفعت المشروع علي render الفيديوهات بتتحفظ لاكن مش بتقعد فتره والاقيها اتمسحت 
دورت علي الموضوع فهمت ان الحاجات دي بتتحفظ تقريبا في الميموري وبعد فتره تتمسح ازاي احل المشكله دي 
بدون استخدام استضافه خارجيه للصور  

Recommended Posts

  • 0
نشر

 الملفات التي يتم حفظها باستخدام Multer يتم تخزينها في الذاكرة المؤقتة، والذاكرة المؤقتة هي منطقة تخزين مؤقتة تستخدم لحفظ البيانات التي يتم استخدامها بشكل متكرر، مثل الملفات التي يتم تحميلها من خلال استمارات HTML، وعندما تنتهي جلسة المستخدم أو يتم إعادة تشغيل الخادم، يتم مسح البيانات المخزنة في الذاكرة المؤقتة.

وستحتاج إلى تخزين الملفات في موقع دائم عن طريق استخدام نظام ملفات على الخادم الخاص بك أو عن طريق استخدام خدمة تخزين سحابية مثل Amazon S3 أو Google Cloud Storage.

عليك بالتالي:

  1. إنشاء دليل جديد لحفظ الملفات.
  2. منح الخادم الخاص بك حقوق الوصول للكتابة إلى هذا الدليل.
  3. تعديل middleware Multer الخاص بك لتخزين الملفات في هذا الدليل.

أي إن قمت بإنشاء دليل يسمى "uploads" في جذر موقع الويب الخاص بك، يمكنك تعديل middleware Multer الخاص بك كالتالي:

const multer = require('multer');

const storage = multer.diskStorage({
  destination: './uploads',
  filename: (req, file, cb) => {
    cb(null, file.originalname);
  }
});

const upload = multer({ storage });

ومن المفترض تخزين الملفات التي يتم تحميلها في دليل "uploads" على الخادم الخاص بك.

وفي حال ترغب في استخدام خدمة تخزين سحابية، يمكنك استخدام الخطوات التالية:

  1. إنشاء حساب في خدمة التخزين السحابية التي تختارها.
  2. إنشاء حاوية تخزين جديدة.
  3. منح الخادم الخاص بك حقوق الوصول إلى حاوية التخزين.
  4. تعديل middleware Multer الخاص بك لتخزين الملفات في حاوية التخزين.

مثلاً إن قمت بإنشاء حاوية تخزين تسمى "uploads" في حساب Amazon S3 الخاص بك، عليك تعديل middleware Multer الخاص بك كالتالي:

const multer = require('multer');
const s3 = require('aws-sdk').S3;

const storage = multer.s3({
  s3: new s3({
    accessKeyId: process.env.AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    region: 'us-east-1'
  }),
  bucket: 'uploads',
  filename: (req, file, cb) => {
    cb(null, file.originalname);
  }
});

const upload = multer({ storage });

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...