PHP实现文件下载的两种方式分别使用GuzzleHttp扩展和Curl扩展来实现。本例以下载PDF文件为例,实际上大家可以举一反三下载其他文件格式是一样的。

1、使用GuzzleHttp 扩展库

use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;//远程文件路径
$remoteFileUrl="http://www.gov.cn/zhengce/pdfFile/2021_PDF.pdf";
//本地存储路径绝对地址
$saveFilePath=__DIR__ . "/test_download.pdf";
try {$pdfFileResource = fopen($saveFilePath, 'w+');$httpClient = new Client();$response = $httpClient->get($remoteFileUrl,[RequestOptions::SINK => $pdfFileResource]  );if ($response->getStatusCode() === 200) {echo "下载成功:".$saveFilePath;}echo "下载失败";}catch (\Throwable $e){var_dump($e->getMessage());
}

 2、使用 CURL 扩展库

//远程文件路径
$remoteFileUrl = "http://www.gov.cn/zhengce/pdfFile/2021_PDF.pdf";//本地存储路径绝对地址
$saveFilePath = __DIR__ . "/test_download.pdf";$curlHandler = curl_init();curl_setopt_array($curlHandler, [CURLOPT_URL => $remoteFileUrl,CURLOPT_FILE => fopen($saveFilePath, 'w+')
]);curl_exec($curlHandler);
if (curl_errno($curlHandler) === CURLE_OK) {echo '文件已经成功下载: ' . $saveFilePath;
}
curl_close($curlHandler);

如果使用Bash 命令行测试可以使用如下格式: (curl 原地址 --output 存储目标地址)

curl http://www.gov.cn/zhengce/pdfFile/2021_PDF.pdf --output  test.pdf

PHP实现文件下载的两种方式(GuzzleHttp和Curl)相关推荐

  1. java下文_java实现文件下载的两种方式

    本文实例为大家分享了java实现文件下载的具体代码,供大家参考,具体内容如下 public HttpServletResponse download(String path, HttpServletR ...

  2. 使用WebView实现文件下载的两种方式

    在应用中,通常会使用到文件下载功能,一般我们都是写一个下载操作工具类,在异步任务中执行下载功能. 今天我们来看下如何使用WebView的文件下载功能!方法1,自定义下载操作 1. 先来布局<Re ...

  3. java实现文件下载的两种方式6_struts2实现文件下载功能

    本文实例为大家分享了struts2下实现文件下载功能,供大家参考,具体内容如下 下面以实现一个图片下载功能为例: 1. 项目结构 2. web.xml xmlns="http://java. ...

  4. springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)

    参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp ...

  5. [Java中实现Excel表导入导出]基于easy-poi和EasyExcel两种方式实现

    第一种:基于easy-poi实现Excel导入导出 1.导出Excel表格 第一步:在pom文件中导入依赖 <!--基于easy-poi实现Excel导入导出--><dependen ...

  6. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  7. 周一02.3运行python程序的两种方式

    一.运行python程序的两种方式 方法一:交互式:                      优点:输入一行代码立刻返回结果                       缺点:无法永久保存代码 方法 ...

  8. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

  9. android不调用系统发送短信,android之两种方式调用短信发送接口

    释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...

最新文章

  1. java位于算——一个测试搞懂位运算
  2. WinCE Emulator使用介绍
  3. JS高级——JSON、数据存储学习笔记
  4. python设计个人简历_python软件工程师 个人简历模板
  5. 【今日CV 计算机视觉论文速览 143期】Mon, 15 Jul 2019
  6. 在矩池云上复现 CVPR 2018 LearningToCompare_FSL 环境
  7. 删除Github上项目
  8. mysql 无法退出sql命令行编辑
  9. Flutter获取packageName和versionCode
  10. java删除文件夹及其内部文件
  11. JS使用递归遍历json对象进行操作
  12. 联合办公室出租,富有办公成效
  13. excel 自动生成目录
  14. 插画手绘培训,“安利25周年”插画主题创作:畅游RichJay的创业之旅!【信念篇】
  15. HTML--video中的自动播放autoplay以及循环播放loop+更多多媒体标签
  16. testcenter自动化
  17. GPS 入门 6 —— 各国卫星导航系统比较(北斗、伽利略、GLONASS、GPS)(转)
  18. 知行合一ArduPilot | ArduPilot系统框架简述
  19. linux启用dcb步骤,DCB文件擴展名: 它是什麼以及如何打開它?
  20. pwc普华永道 信息技术(上海)面试

热门文章

  1. 红米note9pro和荣耀9x 哪个好 红米note9pro和荣耀9x 哪个更值得入手
  2. 百度收YY,意在把搜索做深
  3. 计算机系统中声卡的作用,声卡的作用和功能是什么
  4. 中国美眉如何幽默地拒绝外国男人
  5. 从零开始制作 WordPress 主题
  6. 顶尖程序员不同于常人的5个区别
  7. 两个嵌套for循环执行顺序
  8. Chrome :错误代码“STATUS_INVALID_IMAGE_HASH”
  9. 如何使用c语言写脚本解释器,脚本解释器编写思路
  10. NOIP初赛 CSP-J1 CSP-S1 第1轮 初赛 信奥中的数学知识(二)