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 相关文章推荐
怎样在UNIX系统下安装MySQL
Oct 09 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
php判断输入不超过mysql的varchar字段的长度范围
Jun 24 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
php强制运行广告的方法
Dec 01 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
PHP的Yii框架中View视图的使用进阶
Mar 29 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 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/07/16 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
tagName的使用,留一笔
2006/06/26 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
axios基本入门用法教程
2017/03/25 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
解决Django连接db遇到的问题
2019/08/29 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
上学迟到的检讨书
2014/01/11 职场文书
安全标兵事迹材料
2014/08/17 职场文书
预备党员转正材料
2014/12/19 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书