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 相关文章推荐
快速开发一个PHP扩展图文教程
Dec 12 PHP
基于HTTP长连接的"服务器推"技术的php 简易聊天室
Oct 31 PHP
PHP数据库调用类调用实例(详细注释)
Jul 12 PHP
使用PHP导出Word文档的原理和实例
Oct 21 PHP
PHP程序员基本要求和必备技能
May 09 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
php构造函数与析构函数
Apr 23 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
php 浮点数比较方法详解
May 05 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
Aug 21 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 验证码实例代码
2010/06/01 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
JavaScript的Cookies
2008/01/16 Javascript
javascript RadioButtonList获取选中值
2009/04/09 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
jquery操作select大全
2014/04/25 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
Python中实现对list做减法操作介绍
2015/01/09 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
Python如何给你的程序做性能测试
2020/07/29 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
公司成立感言
2014/01/11 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android