إدارة وتخزين الملفات (File Storage)

سواء كان تطبيقك يحتاج لرفع صور بروفايل المستخدمين، أو تخزين مستندات PDF حساسة، فإن Laravel يوفر لك نظاماً موحداً وبسيطاً يسمى **Filesystem**. الجمال في هذا النظام هو أنه يمنحك نفس "اللغة البرمجية" للتعامل مع الملفات، سواء كنت تخزنها محلياً على جهازك أثناء التطوير، أو كنت تستخدم خدمات سحابية متطورة مثل Amazon S3 في الإنتاج، دون الحاجة لتغيير كودك البرمجي.

1. ربط مجلد التخزين بالويب

بشكل افتراضي، يتم تخزين الملفات المرفوعة في مجلد storage/app/public، وهذا المجلد غير متاح لمستخدمي الإنترنت لأسباب أمنية. لعرض هذه الملفات، يجب إنشاء "اختصار" (Symbolic Link) في مجلد public:

php artisan storage:link

2. رفع الصور والملفات

عند استقبال ملف من نموذج (Form)، يمكنك حفظه في مجلد معين بلمسة زر واحدة. سيتكفل لارافيل بتوليد اسم فريد لكل ملف لحماية البيانات من التداخل:

UserController.php
public function updateAvatar(Request $request)
{
    // التأكد من أن الملف صورة
    $request->validate(['avatar' => 'image']);

    // تخزين الصورة في مجلد 'avatars' وارجاع المسار
    $path = $request->file('avatar')->store('avatars', 'public');

    // حفظ المسار في قاعدة البيانات
    $request->user()->update(['avatar_path' => $path]);
}

3. عرض الملفات المخزنة

لاسترجاع الرابط الكامل للملف وعرضه في متصفح المستخدم، نستخدم المساعد Storage::url():

// في ملف Blade
Avatar

أسئلة شائعة حول التخزين

يمكنك استخدام كلاس Storage مباشرة للحذف: Storage::disk('public')->delete($oldPath);. من الضروري حذف الملفات القديمة لتوفير مساحة على الاستضافة.

نعم، يمكنك تعريف عدة "أقراص" (Disks) في ملف config/filesystems.php، مثل FTP أو Amazon S3، واستخدامها بنفس الطريقة.
الدرس القادم

الإشعارات والبريد الإلكتروني

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

تعلم الإشعارات والبريد
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن