php 根据URL下载远程图片、压缩包、pdf等文件到本地

 更新时间:2019年07月26日 14:37:42   作者:下页、再停留  
这篇文章主要介绍了php 根据URL下载远程图片、压缩包、pdf等文件到本地 ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

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+ajaxfileupload+jcrop插件完美实现头像上传剪裁

    PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁

    在做项目的时候,经常需要一些会员系统相关的内容,比如头像的上传与裁剪等等,下面将这块内容分享给大家
    2014-06-06
  • PHP url的pathinfo模式加载不同控制器的简单实现

    PHP url的pathinfo模式加载不同控制器的简单实现

    下面小编就为大家带来一篇PHP url的pathinfo模式加载不同控制器的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • laravel异步监控定时调度器实例详解

    laravel异步监控定时调度器实例详解

    这篇文章主要给大家介绍了关于laravel异步监控定时调度器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • PHP+MySQL投票系统的设计和实现分享

    PHP+MySQL投票系统的设计和实现分享

    php投票系统的设计和实现,需要的朋友可以参考下代码与数据库结果设计,最后脚本之家提供了源码下载
    2012-09-09
  • Yii2中hasOne、hasMany及多对多关联查询的用法详解

    Yii2中hasOne、hasMany及多对多关联查询的用法详解

    hasOne、hasMany是Yii2特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。这篇文章主要介绍了Yii2中hasOne、hasMany及多对多关联查询的用法详解,需要的朋友可以参考下
    2017-02-02
  • PHP中模拟处理HTTP PUT请求的例子

    PHP中模拟处理HTTP PUT请求的例子

    这篇文章主要介绍了PHP中模拟处理HTTP PUT请求的例子,PUT请求会把消息本体中的消息发送到一个URL,跟POST类似,需要的朋友可以参考下
    2014-07-07
  • PHP、Java des加密解密实例

    PHP、Java des加密解密实例

    这篇文章主要介绍了PHP、Java des加密解密实例,des加密是对称加密中在互联网应用的比较多的一种加密方式,本文分别给出了PHP和JAVA版本的实现代码,需要的朋友可以参考下
    2015-04-04
  • laravel使用Faker数据填充的实现方法

    laravel使用Faker数据填充的实现方法

    这篇文章主要给大家介绍了关于laravel使用Faker数据填充的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用laravel具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • thinkphp5框架实现数据库读取的数据转换成json格式示例

    thinkphp5框架实现数据库读取的数据转换成json格式示例

    这篇文章主要介绍了thinkphp5框架实现数据库读取的数据转换成json格式,涉及thinkPHP5数据库读取数据与json格式转换相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • php实现QQ小程序发送模板消息功能

    php实现QQ小程序发送模板消息功能

    QQ小程序群里有伙伴要发送模板消息的代码,所以今天给大家分享QQ小程序模板消息发布,绝对一步一步带着大家走,每个细节都讲到,感兴趣的朋友跟随小编一起看看吧
    2019-09-09

最新评论