使用Response::download 在Laravel 中下載檔案
許多開發人員在嘗試允許使用者在不導航的情況下在視圖中導航下載檔案時遇到挑戰。本文解決了常見問題並提供了解決方案。
問題:
檔案路徑「/public/download/info.pdf」不存在,下載按鈕導覽至使用者前往不同的檢視而非啟動下載。
潛在解決方案:
1.正確的檔案路徑:
第一個問題是由錯誤的檔案路徑引起的。您應該指定完整的實體路徑,而不是「./download/info.pdf」:
<code class="php">$file = public_path(). "/download/info.pdf";</code>
2.避免導航:
要阻止使用者導航,請將按鈕替換為以下內容:
<code class="html"><a href="#" onclick="downloadFile();" class="btn btn-large pull-right"><i class="icon-download-alt"></i> Download Brochure</a></code>
3. JavaScript 函數:
添加JavaScript 函數來處理下載:
<code class="javascript">function downloadFile() { var url = "/download"; window.location.href = url; return false; }</code>
4.更新控制器:
修改控制器以返回具有正確標頭的檔案:
<code class="php">public function getDownload() { $headers = ['Content-Type' => 'application/pdf']; return response()->download($file, 'filename.pdf', $headers); }</code>
Laravel 5 及更高版本的注意事項:
對於版本5及更高版本,使用response()->download()而不是Response::download()。此外,標頭數組應格式化為關聯數組:
<code class="php">$headers = [ 'Content-Type' => 'application/pdf', ];</code>
透過實作這些更新,「下載」按鈕將在同一視圖上啟動檔案下載,而無需引導使用者離開。
以上是如何在沒有導航的情況下從 Laravel 中的視圖下載檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!