php 根据URL下载远程图片、压缩包、pdf等文件到本地


Posted in PHP onJuly 26, 2019

1、此方法可以下载图片、压缩包、pdf(亲测),应该所有类型的文件都可以下载到本地,可以试一下

//远程路径,名称,文件后缀
function downImgRar($url,$rename,$ext){
  switch ($ext) {
    case 'jpg':    //下载图片
      $file_path = 'uploads/images/';      
      break;
    case 'png':    //下载图片
      $file_path = 'uploads/images/';      
      break;
    case 'pdf':    //下载PDF
      $file_path = 'uploads/pdf/';  
      break;
    case 'rar':    //下载压缩包
      $file_path = 'uploads/rar/';      
      break;
    case 'zip':    //下载压缩包
      $file_path = 'uploads/rar/';      
      break;
    default:
      $file_path = 'uploads/files/';      
    break;
  }
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
  $rawdata=curl_exec ($ch);
  curl_close ($ch);
  // 使用中文文件名需要转码
  $fp = fopen($file_path.iconv('UTF-8', 'GBK', $rename).".".$ext,'w');
  fwrite($fp, $rawdata);
  fclose($fp);
  // 返回路径
  return $_SERVER['DOCUMENT_ROOT'].$file_path.$rename.".".$ext;
}

2、下载压缩文件,这个只可以下载压缩文件

// 下载压缩包
function downRar($file_path)
{
  $file_name = '/uploads/rar/2009323162920-维C银翘片说明书.rar';
  $file_name = iconv("utf-8","gbk//IGNORE",$file_name); // 特别注意!特别注意!特别注意这里,windows下必须开转码,不然直接文件不存
  $file_path = $_SERVER['DOCUMENT_ROOT'] . $file_name;// 比如windows下这里我的是 "D:/web/public/uploads/rar/2009323162920-维C银翘片说明书.rar"
  //判断如果文件存在,则跳转到下载路径
  if (!file_exists($file_path)) {
    die("文件不存在!");
  }
  $fp = fopen($file_path, "r+") or die('打开文件错误');  //下载文件必须要将文件先打开。写入内存
  $file_size = filesize($file_path);
  //返回的文件流
  Header("Content-type:application/octet-stream");
  //按照字节格式返回
  Header("Accept-Ranges:bytes");
  //返回文件大小
  Header("Accept-Length:" . $file_size);
  //弹出客户端对话框,对应的文件名
  Header("Content-Disposition:attachment;filename=" . substr($file_name, strrpos($file_name, '/') + 1));
  //防止服务器瞬间压力增大,分段读取
  $buffer = 1024;
  while (!feof($fp)) {
    $file_data = fread($fp, $buffer);
    echo $file_data;
  }
  fclose($fp);
  die("下载成功!");
}

总结

以上所述是小编给大家介绍的php 根据URL下载远程图片、压缩包、pdf等文件到本地,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
MYSQL环境变量设置方法
Jan 15 PHP
php项目打包方法
Feb 18 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
php模拟post提交数据的方法
Feb 12 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
PHP中散列密码的安全性分析
Jul 26 #PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 #PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 #PHP
php使用socket调用http和smtp协议实例小结
Jul 26 #PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 #PHP
yii框架使用分页的方法分析
Jul 25 #PHP
php实现的生成排列算法示例
Jul 25 #PHP
You might like
PHP 判断变量类型实现代码
2009/10/23 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
vue-cli3访问public文件夹静态资源报错的解决方式
2020/09/02 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python中的map、reduce和filter浅析
2014/04/26 Python
详解python eval函数的妙用
2017/11/16 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
python不同版本的_new_不同点总结
2020/12/09 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
户外婚礼策划方案
2014/02/08 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
青年文明号创建承诺
2014/03/31 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
免职通知
2015/04/23 职场文书
如何写通讯稿
2015/07/22 职场文书
同学聚会开幕词
2019/04/02 职场文书
高一作文之暖冬
2019/11/09 职场文书
Python使用DFA算法过滤内容敏感词
2022/04/22 Python
使用Redis实现分布式锁的方法
2022/06/16 Redis