Laravel 响应:返回文件下载 Draft 3 个改进

应用场景

用户点击页面上的按钮,即可将文件下载文件到本地。

如何用 Laravel 实现

Laravel 提供的 download() 方法,原理是生成一个下载的响应,访问这个路由时自动下载。

具体实现

页面上的按钮

<a href="/download" class="btn btn-large pull-right">
    <i class="icon-download-alt"> </i> Download Brochure 
</a>

路由

Route::get('/download', 'HomeController@getDownload');

控制器

public function getDownload()
{
    //PDF file is stored under project/public/download/info.pdf
    $file= public_path(). "/download/info.pdf";

    $headers = [
        'Content-Type: application/pdf',
    ];

    return response()->download($file, 'filename.pdf', $headers);
}

参数说明

  • 第一个参数:文件在服务器上的 绝对路径 路径
  • 第二个参数:指定下载后的文件名(可选)
  • 第三个参数:以数组的形式传递 HTTP 头信息(可选)

常见错误

报错信息

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 有一项服务没有打开。

解决方法

  1. 打开 php.ini 文件
  2. extension=php_fileinfo.dll 前面的分号去掉
  3. 重启服务器
本 Wiki 尚未完善,邀您参与 如何撰写一篇高品质的 Wiki?
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!