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 相关文章推荐
Windows下PHP的任意文件执行漏洞
Oct 09 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
php处理restful请求的路由类分享
Feb 27 PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
浅析PHP文件下载原理
Dec 25 PHP
PHP实现动态web服务器方法
Jul 29 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
简单谈谈PHP中的trait
Feb 25 PHP
Laravel中任务调度console使用方法小结
May 07 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制作静态网站的模板框架(一)
2006/10/09 PHP
php strcmp使用说明
2010/04/22 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
教你用Python写安卓游戏外挂
2018/01/11 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
python3实现猜数字游戏
2020/12/07 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
python 写一个水果忍者游戏
2021/01/13 Python
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
优秀班集体获奖感言
2014/02/03 职场文书
如何写求职信
2014/05/24 职场文书
医院义诊活动总结
2014/07/04 职场文书
无房证明范本
2014/09/17 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
论文答谢词
2015/01/20 职场文书
公司人事任命通知
2015/04/20 职场文书
初中班干部工作总结
2015/08/10 职场文书
Python中文纠错的简单实现
2021/07/07 Python
详解nginx location指令
2022/01/18 Servers
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis