PHP Laravel实现文件下载功能

 更新时间:2017年09月11日 09:35:52   作者:axaaxaa  
本文重点给大家介绍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功能后发现能正常访问。

总结

以上所述是小编给大家介绍的PHP Laravel实现文件下载功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Mybatis Properties 配置优先级详解

    Mybatis Properties 配置优先级详解

    这篇文章主要介绍了Mybatis Properties 配置优先级,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 详解Java中AC自动机的原理与实现

    详解Java中AC自动机的原理与实现

    AC自动机是一个多模式匹配算法,在模式匹配领域被广泛应用。本文将详细为大家介绍AC自动机的原理与实现方法,感兴趣的可以了解一下
    2022-05-05
  • spring 项目实现限流方法示例

    spring 项目实现限流方法示例

    这篇文章主要为大家介绍了spring项目实现限流的方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Springboot 上传文件或头像(MultipartFile、transferTo)

    Springboot 上传文件或头像(MultipartFile、transferTo)

    本文主要介绍了Springboot 上传文件或头像(MultipartFile、transferTo),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java虚拟机精选面试题20道

    Java虚拟机精选面试题20道

    现在面试Java开发时,基本都会问到Java虚拟机的知识,根据职位不同问的内容深浅又有所区别。本文整理了10道面试中常问的Java虚拟机面试题,希望对正在面试的同学有所帮助
    2021-06-06
  • java中如何截取字符串最后一位

    java中如何截取字符串最后一位

    这篇文章主要介绍了java中如何截取字符串最后一位的实现方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java设计模式之桥接模式详解

    Java设计模式之桥接模式详解

    桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分和实现部分`分离开来,从而使它们可以独立地进行变化,本节给大家讲一下设计模式中的桥接模式,并结合实际业务场景给大家讲解如何使用,需要的朋友可以参考下
    2023-07-07
  • 如何用java给一个文件夹打成压缩包(附代码)

    如何用java给一个文件夹打成压缩包(附代码)

    项目中需要将文件夹打包成压缩包下载,所以下面这篇文章主要给大家介绍了关于如何用java给一个文件夹打成压缩包的相关资料,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-10-10
  • 详解log4j.properties的简单配置和使用

    详解log4j.properties的简单配置和使用

    本篇文章主要介绍了详解log4j.properties的简单配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • SpringBoot中Redis的缓存更新策略详解

    SpringBoot中Redis的缓存更新策略详解

    这篇文章主要介绍了SpringBoot中Redis的缓存更新策略,缓存一般是为了应对高并发场景、缓解数据库读写压力,而将数据存储在读写更快的某种存储介质中(如内存),以加快读取数据的速度,需要的朋友可以参考下
    2023-08-08

最新评论