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

السؤال

نشر

أرغب بإضافة زر على واجهة المستخدم تمكّنه من تحميل ملف معيّن دون إعادة التوجيه إلى أي واجهة أخرى.

حاولت إضافة رابط ضمن الواجهة:

  <a href="/download">ابدأ التحميل</a>

وقمت بربط المسار مع المتحكم الخاص بالتحميل:

Route::get('/download', 'MainController@download');

وضمن المتحكم قمت بكتابة الكود التالي:

public function download(){
        $file="./download/testfile.pdf";
        return Response::download($file);
}

ولكن عند الضغط على الزر يظهر الخطأ التالي:

The file "/public/download/testfile.pdf" does not exist

كيف أستطيع حل هذه المشكلة؟

Recommended Posts

  • 1
نشر

يمكنك أن تضيف header في التابع download بالشكل التالي:

public function download(){
  $headers = ['Content-Type' => 'application/pdf'];

  // ضع هنا مسار الملف الصحيح
  $file = asset("/download/testfile.pdf");

  // filename.pdf هو اسم الملف عند التحميل
  return response()->download($file, 'filename.pdf', $headers);
}

بهذا الشكل سيتم تحميل ملف PDF بشكل صحيح.

بالتوفيق.

  • 0
نشر

يمكنك إجراء بعض التعديلات على دالة download لتصبح بهذا الشكل 

public function getDownload()
{
    $file= public_path(). "/download/testfile.pdf";

    $headers = array(
              'Content-Type: application/pdf',
            );

    return Response::download($file, 'filename.pdf', $headers);
}

أو يمكنك استخدام 

return response()->download(public_path('file_path/from_public_dir.pdf'));

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...