انتقل إلى محتوى الدرس
الدرس 27
دورة إطار العمل Laravel

رفع الملفات الآمن وأقراص التخزين والروابط الرمزية في LaravelSecure File Uploads Storage Disks and Symbolic Links

التحقق من نوع وحجم الملفات المرفوعة وحفظها بأسماء آمنة عبر نظام التخزين Storage وربطها بأمر storage:link وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

لا تستطيع نماذج HTML إرسال الملفات الثنائية إلا عند إضافة خاصية الترميز enctype="multipart/form-data" في وسم النموذج. وفي الخادم يغلف Laravel كل ملف مرفوع داخل كائن UploadedFile يتم الوصول إليه عبر دالة file لفحص وجوده وسلامة انتقاله.

  • ترميز النموذج (multipart/form-data): خاصية إلزامية في وسم form لتمكين المتصفح من نقل البيانات الثنائية.
  • فحص الوجود (hasFile): التأكد من قيام المستخدم برفع ملف فعلي تحت اسم الحقل المحدد.
  • سلامة النقل (isValid): التحقق من اكتمال رفع الملف بنجاح دون انقطاع أو أخطاء في إعدادات PHP.
مخطط معماري يوضح رفع الملفات الآمن وأقراص التخزين والروابط الرمزية في Laravel في إطار العمل Laravel 12
PHP
<form method="POST" action="/upload"
      enctype="multipart/form-data">
    @csrf
    <input type="file" name="avatar">
    <button type="submit">Upload</button>
</form>

يعد قبول الملفات المرفوعة دون تحقق من أخطر الثغرات الأمنية لأن المهاجم قد يرفع ملفات برمجية خبيثة متنكرة في هيئة صور. تفحص قواعد التحقق في Laravel البصمة الفعلية لنوع الملف MIME والامتداد والحجم بالكيلوبايت وأبعاد الصورة قبل حفظها.

  • فحص البصمة (image & mimes): فحص المحتوى الفعلي للملف للسماح بالصيغ الآمنة فقط مثل الصور أو PDF.
  • تقييد الحجم (max): تحديد الحجم الأقصى المسموح به مقدراً بالكيلوبايت لحماية مساحة الخادم.
  • أبعاد الصور (dimensions): فرض شروط على العرض والارتفاع للأيقونات والصور الشخصية.
PHP
$request->validate([
    'avatar' => [
        'required',
        'image',
        'mimes:jpg,png,webp',
        'max:2048',
    ],
]);

يجرد Laravel التعامل مع الملفات عبر محركات Flysystem المعرفة في ملف config/filesystems.php ليعمل الكود بنفس الطريقة محلياً أو سحابياً. يخزن القرص المحلي الافتراضي الملفات الخاصة داخل storage/app/private، بينما يخصص القرص العام public للملفات المتاحة للمتصفح.

  • القرص الخاص (local Disk): يحفظ الملفات الحساسة في مجلد خاص لا يمكن الوصول إليه عبر روابط المتصفح.
  • القرص العام (public Disk): يحفظ الصور والوسائط العامة داخل storage/app/public تمهيداً لعرضها.
  • التخزين السحابي (s3 Driver): يتيح الانتقال للتخزين السحابي عبر تعديل الإعدادات دون تغيير كود التطبيق.
PHP
// Storing files on explicit Flysystem disks
Storage::disk('local')
    ->put('private/note.txt', 'Secret');
Storage::disk('public')
    ->put('banners/hero.txt', 'Public');

إياك وحفظ الملفات المرفوعة باسمها الأصلي القادم من جهاز المستخدم لأن ذلك يفتح باب استبدال ملفات الآخرين أو التلاعب بالمسارات. تقوم دالة store تلقائياً بتوليد اسم عشوائي فريد ومشفر للملف مع الحفاظ على امتداده الصحيح.

  • الحفظ المشفر (store): توليد اسم فريد عشوائي تلقائياً وحفظ الملف داخل المجلد والقرص المحددين.
  • الحفظ المسمى (storeAs): تحديد اسم ملف مخصص ومضبوط برمجياً عند الحاجة لتسمية موحدة.
  • إرجاع المسار (Relative Path): تعيد الدالتان المسار النسبي للملف المحفوظ ليسهل تخزينه واسترجاعه لاحقاً.
PHP
$path = $request->file('avatar')
    ->store('avatars', 'public');

return back()->with('avatar_path', $path);

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

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحميمعيار Laravel 12 الحديث
فحص الملف المرفوعالاعتماد على امتداد الاسم النصي في $_FILES فقطفحص البصمة الثنائية والحجم عبر قواعد image و mimes و max
مجلد الحفظنقل الملف مباشرة داخل مجلد public المتاح للتنفيذالعزل في storage/app والربط الآمن عبر الرابط الرمزي storage:link
أمان اسم الملفاستخدام اسم ملف المستخدم الأصلي المعرض للاستبدالتوليد اسم مشفر فريد بطول 40 حرفاً تلقائياً عبر دالة store
قابلية النقل السحابيمسارات ملفات محلية ثابتة داخل الكود يصعب تغييرهاواجهة Storage::disk الموحدة للأقراص المحلية والسحابية S3
PHP
if ($request->hasFile('avatar')) {
    $path = $request->file('avatar')
        ->store('avatars', 'public');
    $url = Storage::url($path);
}
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «رفع الملفات الآمن وأقراص التخزين والروابط الرمزية في Laravel» مفاهيم نماذج رفع الملفات وفحص استلامها، والتحقق من نوع وحجم الملفات، وإعداد أقراص التخزين المحلية والعامة وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «إعداد اتصال قواعد البيانات وأساسيات التهجير في Laravel» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 File Uploads رفع الملفات
التحقق من نوع وحجم الملفات المرفوعة وحفظها بأسماء آمنة عبر نظام التخزين Storage وربطها بأمر storage:link وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
للمراجعة
02 Multipart Forms and Uploaded Files نماذج رفع الملفات وفحص استلامها
المفهوم الهندسي والتطبيق العملي المباشر لقسم نماذج رفع الملفات وفحص استلامها في إطار العمل Laravel 12.
للمراجعة
03 Validating File Types and Sizes التحقق من نوع وحجم الملفات
المفهوم الهندسي والتطبيق العملي المباشر لقسم التحقق من نوع وحجم الملفات في إطار العمل Laravel 12.
للمراجعة
04 Configuring Local and Public Disks إعداد أقراص التخزين المحلية والعامة
المفهوم الهندسي والتطبيق العملي المباشر لقسم إعداد أقراص التخزين المحلية والعامة في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «نماذج رفع الملفات وفحص استلامها» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «التحقق من نوع وحجم الملفات» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من نماذج رفع الملفات وفحص استلامها في إطار العمل Laravel 12؟

يسهم نماذج رفع الملفات وفحص استلامها في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «التحقق من نوع وحجم الملفات» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة إعداد أقراص التخزين المحلية والعامة بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة إعداد أقراص التخزين المحلية والعامة.

04

لماذا يُعد تطبيق حفظ الملفات بأسماء مشفرة آمنة مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق الرابط الرمزي وإدارة الملفات المخزنة في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص رفع الملفات وأقراص التخزين؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.