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 相关文章推荐
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
php登陆页的密码处理方式分享
Oct 14 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
Yii框架分页实现方法详解
May 20 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 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提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
pyinstaller还原python代码过程图解
2020/01/08 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
remote接口和home接口主要作用
2013/05/15 面试题
工作表扬信的范文
2014/01/10 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
感恩母亲节活动总结
2015/02/10 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
Java 关于String字符串原理上的问题
2022/04/07 Java/Android