首頁  >  文章  >  後端開發  >  如何在沒有導航的情況下從 Laravel 中的視圖下載檔案?

如何在沒有導航的情況下從 Laravel 中的視圖下載檔案?

Susan Sarandon
Susan Sarandon原創
2024-11-04 12:23:29991瀏覽

How to Download Files from a View in Laravel Without Navigation?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn