Memuat Turun Fail dalam Laravel Menggunakan Respons::muat turun
Ramai pembangun menghadapi cabaran apabila cuba membenarkan pengguna memuat turun fail dalam paparan tanpa navigasi . Artikel ini menangani isu biasa dan menyediakan penyelesaian.
Masalah:
Laluan fail "/public/download/info.pdf" tidak wujud dan butang Muat turun menavigasi ke pengguna ke paparan berbeza dan bukannya memulakan muat turun.
Potensi Penyelesaian:
1. Laluan Fail Betul:
Isu pertama timbul daripada laluan fail yang salah. Daripada "./download/info.pdf", anda harus menentukan laluan fizikal penuh:
<code class="php">$file = public_path(). "/download/info.pdf";</code>
2. Mengelak Navigasi:
Untuk menghalang navigasi pengguna, gantikan butang dengan yang berikut:
<code class="html"><a href="#" onclick="downloadFile();" class="btn btn-large pull-right"><i class="icon-download-alt"></i> Download Brochure</a></code>
3. Fungsi JavaScript:
Tambah fungsi JavaScript untuk mengendalikan muat turun:
<code class="javascript">function downloadFile() { var url = "/download"; window.location.href = url; return false; }</code>
4. Pengawal Dikemas Kini:
Ubah suai pengawal untuk mengembalikan fail dengan pengepala yang betul:
<code class="php">public function getDownload() { $headers = ['Content-Type' => 'application/pdf']; return response()->download($file, 'filename.pdf', $headers); }</code>
Nota untuk Laravel 5 dan Lebih Tinggi:
Untuk versi 5 dan kemudian, gunakan response()->download() dan bukannya Response::download(). Selain itu, tatasusunan pengepala hendaklah diformatkan sebagai tatasusunan bersekutu:
<code class="php">$headers = [ 'Content-Type' => 'application/pdf', ];</code>
Dengan melaksanakan kemas kini ini, butang Muat Turun akan memulakan muat turun fail pada paparan yang sama tanpa menavigasi pengguna pergi.
Atas ialah kandungan terperinci Bagaimana untuk Muat Turun Fail dari Paparan dalam Laravel Tanpa Navigasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!