1. 程式人生 > >laravel實現下載檔案

laravel實現下載檔案

laravelapp\routes\web.php


Route::get('download',function(){
    return response()->download(realpath(base_path('public')).'/tourist.xlsx', 'tourist.xlsx');
});
<form action="" method="post" enctype="multipart/form-data">
 {{csrf_field()}}
 <div class="add_box"> <span onclick="downloadExcel()">模板下載</span> 
</div> 
</form>
//模板下載
   function downloadExcel(){
    //獲取伺服器地址
       var host = location.host;
       //把excel傳送出來
       var url = "http://"+ host +"/admin/commodity/download";
       window.open(url);
   }
/*
 * @模板下載
 */
public function download(){
    return response()
        ->download(realpath(base_path('public')).'/goods.xlsx', 'goods.xlsx');
}
/*
 * @模板下載
 */
public function download(){
    return response()
        ->download(realpath(base_path('public')).'/goods.xlsx', "商品匯入表".'.xlsx');
}

上面的是中文的下載方式,

>download(realpath(base_path('public')).'/goods.xlsx'==============>是路徑

"商品匯入表".'.xlsx'===================>是下載後的別名

laravelapp\resources\views\email\back.blade.php

<button onclick="downloadExcel()">Download Excel</button>

<script>
    function downloadExcel() {
        //獲取伺服器地址
        var host = location.host;

        //把excel傳送出來
        var url = "http://"+ host +"/download";
        window.open(url);
    }

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

說明:

  1. 請確保你提供下載的檔案存在。
  2. realpath(base_path('public')).'/tourist.xlsx'是一個引數,當然可以用絕對路徑如:C:\xampp\htdocs\laravelapp\public\tourist.xlsx
  3. base_path 提供了相對路徑的可行性,方便移植。
  4. 如果你遇到以下的錯誤,那麼是php有一項服務沒有開啟。
    LogicException in MimeTypeGuesser.php line 135:
    Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)

    解決:
    去到php目錄下找到php.ini檔案,如C:\xampp\php\php.ini,找到 extension=php_fileinfo.dll,把前面的分號去掉,並重啟一遍伺服器,如:

    C:\xampp\htdocs\laravelapp>php -S localhost:100 -t public

    在phpinfo頁面可以搜尋fileinfo,看到下圖,說明你成功開啟了。

    phpinfo.php


    phpinfo頁面可以用以下程式碼調出。

    Route::get('download',function(){
        phpinfo();
        //return response()->download(realpath(base_path('public')).'/tourist.xlsx', 'tourist.xlsx');
    });
  5. 如果你像我一樣用chorme瀏覽器開啟下載頁面會馬上消失,推薦換個瀏覽器試試,如火狐,我便是用火狐成功的。
  6. 如果你調出這個頁面,恭喜你成功了!

    下載頁面

參考:http://www.jianshu.com/p/e4f2770971ce