本文重點介紹Laravel實作檔案下載功能的實例程式碼,需要的朋友參考下吧
Laravel 的上一個LTS(長期支援)版本是Laravel 5.1,發佈於2015 年6 月,依照LTS 版本的約定,兩年的bug 修復支援到今年中旬就結束了,所以今年中旬必然要出一個LTS 後繼版本,就是Laravel 5.5。本文重點介紹Laravel實作檔案下載功能的實作方法,大家參考下本文吧
download 方法可以用來產生強制讓使用者的瀏覽器下載指定路徑檔案的回應。 download 方法接受檔案名稱作為方法的第二個參數,此名稱為使用者下載檔案時所看見的檔案名稱。最後,你可以傳遞一個包含 HTTP 頭資訊的陣列作為第三個參數傳入該方法:
return response()->download($pathToFile); return response()->download($pathToFile, $name, $headers);
以下是自己在專案裡使用的檔案下載功能。
public function downloadfile($filename) { $file = public_path().'/test.xls'; return response()->download($file,$filename.'.xls'); }
但是呢,剛開始進展不是很順利,為什麼使用laravel自帶的檔案下載功能會失敗能,錯誤如下提示:
FatalErrorException in HandleCors.php line 18: Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::header()
大概的意思是說,header()方法沒有被定義,經過各種摸索後找到了解決方案,我們可以重新定義一下header,在CorsMiddleware的handle方法中添加如下方法:
class CorsMiddleware { public function handle($request, Closure $next) { $response = $next($request); $response->headers->set('Access-Control-Allow-Origin' , '*'); $response->headers->set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE'); $response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With, Application'); return $response; } }
最後,再重新定義header之後,我們再使用download功能後發現能正常存取。
總結
#以上是Laravel框架實作檔案下載功能的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!