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实现WEB动态网页静态
Oct 09 PHP
PHP 高手之路(三)
Oct 09 PHP
mysq GBKl乱码
Nov 28 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
PHP程序61条面向对象分析设计的经验小结
Nov 12 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
php xhprof使用实例详解
Apr 15 PHP
PHP命令行与定时任务
Apr 01 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判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
前端微信支付js代码
2016/07/25 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
详解webpack分离css单独打包
2017/06/21 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
Python外星人入侵游戏编程完整版
2020/03/30 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
Django数据库表反向生成实例解析
2018/02/06 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
python对文件的操作方法汇总
2020/02/28 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
舞蹈教育学专业求职信
2014/06/29 职场文书