PHP实现文件下载的两种方式(GuzzleHttp和Curl)
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)相关推荐
- java下文_java实现文件下载的两种方式
本文实例为大家分享了java实现文件下载的具体代码,供大家参考,具体内容如下 public HttpServletResponse download(String path, HttpServletR ...
- 使用WebView实现文件下载的两种方式
在应用中,通常会使用到文件下载功能,一般我们都是写一个下载操作工具类,在异步任务中执行下载功能. 今天我们来看下如何使用WebView的文件下载功能!方法1,自定义下载操作 1. 先来布局<Re ...
- java实现文件下载的两种方式6_struts2实现文件下载功能
本文实例为大家分享了struts2下实现文件下载功能,供大家参考,具体内容如下 下面以实现一个图片下载功能为例: 1. 项目结构 2. web.xml xmlns="http://java. ...
- springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)
参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp ...
- [Java中实现Excel表导入导出]基于easy-poi和EasyExcel两种方式实现
第一种:基于easy-poi实现Excel导入导出 1.导出Excel表格 第一步:在pom文件中导入依赖 <!--基于easy-poi实现Excel导入导出--><dependen ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- 周一02.3运行python程序的两种方式
一.运行python程序的两种方式 方法一:交互式: 优点:输入一行代码立刻返回结果 缺点:无法永久保存代码 方法 ...
- 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...
- android不调用系统发送短信,android之两种方式调用短信发送接口
释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...
最新文章
- java位于算——一个测试搞懂位运算
- WinCE Emulator使用介绍
- JS高级——JSON、数据存储学习笔记
- python设计个人简历_python软件工程师 个人简历模板
- 【今日CV 计算机视觉论文速览 143期】Mon, 15 Jul 2019
- 在矩池云上复现 CVPR 2018 LearningToCompare_FSL 环境
- 删除Github上项目
- mysql 无法退出sql命令行编辑
- Flutter获取packageName和versionCode
- java删除文件夹及其内部文件
- JS使用递归遍历json对象进行操作
- 联合办公室出租,富有办公成效
- excel 自动生成目录
- 插画手绘培训,“安利25周年”插画主题创作:畅游RichJay的创业之旅!【信念篇】
- HTML--video中的自动播放autoplay以及循环播放loop+更多多媒体标签
- testcenter自动化
- GPS 入门 6 —— 各国卫星导航系统比较(北斗、伽利略、GLONASS、GPS)(转)
- 知行合一ArduPilot | ArduPilot系统框架简述
- linux启用dcb步骤,DCB文件擴展名: 它是什麼以及如何打開它?
- pwc普华永道 信息技术(上海)面试
热门文章
- 红米note9pro和荣耀9x 哪个好 红米note9pro和荣耀9x 哪个更值得入手
- 百度收YY,意在把搜索做深
- 计算机系统中声卡的作用,声卡的作用和功能是什么
- 中国美眉如何幽默地拒绝外国男人
- 从零开始制作 WordPress 主题
- 顶尖程序员不同于常人的5个区别
- 两个嵌套for循环执行顺序
- Chrome :错误代码“STATUS_INVALID_IMAGE_HASH”
- 如何使用c语言写脚本解释器,脚本解释器编写思路
- NOIP初赛 CSP-J1 CSP-S1 第1轮 初赛 信奥中的数学知识(二)