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

السؤال

نشر

لدي مجموعة من صور الحسابات الشخصية التي تم تحميلها إلى مجلد storage في لارافيل. ولكن الخادم يقوم بتحويل جميع الروابط إلى المجلد public فكيف يمكنني الوصول إلى الصور والملفات المخزنة في المجلد storage بدلاً من ذلك وجعلها تظهر ضمن ال views؟

Recommended Posts

  • 1
نشر

وفقاً للتوثيق الرسمي في لارافيل، يفضّل وضع الملفات العامة مثل الصور ضمن المجلّد public، ولكن في حال وجود الملفات في مجلّد آخر ولإتاحته على الويب يمكن إنشاء رابط يدعى symbolic من المسار public/storage إلى المسار storage/app/public كالتالي:

ln -s /path/to/laravel/storage/app/public /path/to/laravel/public/storage

الآن يمكنك إضافة رابط URL ضمن ال views باستخدام asset helper بالشكل التالي:

echo asset('storage/file.txt');

ولكن في بعض الحالات لدى بعض الاستضافات المشتركة لا يمكنك إنشاء symbolic link عندها يمكنك إنشاء مسار جديد route في لارافيل والتوجيه إليه عند طلب الملفات. مثال:

Route::get('storage/{filename}', function ($filename)
{
    $path = storage_path('public/' . $filename);

    if (!File::exists($path)) {
        abort(404);
    }

    $file = File::get($path);
    $type = File::mimeType($path);

    $response = Response::make($file, 200);
    $response->header("Content-Type", $type);

    return $response;
});

أما للصور، فيمكن عن طريق لارافيل استخدام مكتبة الصور كالتالي:

Route::get('storage/{filename}', function ($filename)
{
    return Image::make(storage_path('public/' . $filename))->response();
});

الآن يمكن ببساطة وضع الرابط التالي في أي صفحة view :

http://somedomain.com/storage/image.jpg

مع استبدال somedomain باسم النطاق الخاص بك.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...