在 Laravel 中使用 Response::download 下載檔案
在 Laravel 中,Response::download 方法允許使用者從伺服器下載檔案。以下是實現此功能時遇到的問題的解決方案:
1.檔案路徑問題:
錯誤「檔案...不存在”表示檔案路徑不正確。若要解決此問題,請使用public_path() 幫助程式指定檔案的完整實體路徑:
$file= public_path(). "/download/info.pdf";
2.防止頁面導覽:
要避免導覽至另一個視圖或路線,請使用Ajax 請求來處理檔案下載。具體方法如下:
ViewController:
<button class="btn btn-large pull-right" data-href="/download" id="downloadBtn"> <i class="icon-download-alt"></i> Download Brochure </button>
JavaScript:
$(document).ready(function() { $('#downloadBtn').click(function() { $.ajax({ url: $(this).data('href'), success: function() { alert('File downloaded successfully!'); }, error: function() { alert('Error downloading file!'); } }); }); });
控制器:
public function getDownload() { // Same code as before, but now it returns a JSON response return response()->json([ 'success' => true, 'message' => 'File downloaded successfully!' ]); }
Laravel v5.0 更新:
正如解決方案中指出的,您可以使用Laravel v5.0 中的response() 方法響應門面的。標頭結構也略有不同,如下:
$headers = [ 'Content-Type' => 'application/pdf', ]; return response()->download($file, 'filename.pdf', $headers);
以上是如何在 Laravel 中使用 Response::download 下載檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!