Laravel 的上一個 LTS(長期支持)版本是 Laravel 5.1,發布于 2015 年 6 月,按照對 LTS 版本的約定,兩年的 bug 修復支持到今年中旬就結束了,所以今年中旬必然要出一個 LTS 后繼版本,就是 Laravel 5.5。本文重點給大家介紹Laravel實現文件下載功能的實現方法,大家參考下本文吧
download 方法可以用于生成強制讓用戶的瀏覽器下載指定路徑文件的響應。download 方法接受文件名稱作為方法的第二個參數,此名稱為用戶下載文件時看見的文件名稱。最后,你可以傳遞一個包含 HTTP 頭信息的數組作為第三個參數傳入該方法:
1
2
|
return response()->download( $pathToFile ); return response()->download( $pathToFile , $name , $headers ); |
以下是本人在項目里使用的文件下載功能。
1
2
3
4
5
|
public function downloadfile( $filename ) { $file = public_path(). '/test.xls' ; return response()->download( $file , $filename . '.xls' ); } |
但是呢,剛開始進展不是很順利,為什么使用laravel自帶的文件下載功能會失敗能,錯誤如下提示:
1
2
|
FatalErrorException in HandleCors.php line 18: Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::header() |
大概的意思就是說,header()方法沒有被定義,經過各種摸索后找到了解決方案,我們可以重新定義一下header,在CorsMiddleware的handle方法中添加如下方法:
1
2
3
4
5
6
7
8
9
10
11
|
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功能后發現能正常訪問。
總結
以上所述是小編給大家介紹的PHP Laravel實現文件下載功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://blog.csdn.net/lilian1131/article/details/77921501