Laravel 响应:返回文件下载
应用场景
用户点击页面上的按钮,即可将文件下载文件到本地。
如何用 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 的 php_fileinfo 扩展没有启用。
解决方法
- 打开
php.ini
文件 - 把
extension=php_fileinfo.dll
前面的分号去掉 - 重启 php-fpm
推荐文章: