PHP解压ZIP文件到指定文件夹的方法


Posted in PHP onNovember 17, 2016

本文实例讲述了PHP解压ZIP文件到指定文件夹的方法。分享给大家供大家参考,具体如下:

/**
 * function: 解压zip 格式的文件
 * author:friker
 * date:2015-15-14
 * reference:http://php.net/manual/zh/ref.zip.php
 * all rights reserved:wujiangwei123@126.com
 */
class Unzip{
  public function __construct(){
    //init code here...
    header("content-type:text/html;charset=utf8");
  }
  /**
  * 解压文件到指定目录
  *
  * @param  string  zip压缩文件的路径
  * @param  string  解压文件的目的路径
  * @param  boolean 是否以压缩文件的名字创建目标文件夹
  * @param  boolean 是否重写已经存在的文件
  *
  * @return boolean 返回成功 或失败
  */
  public function unzip($src_file, $dest_dir=false, $create_zip_name_dir=true, $overwrite=true){
  if ($zip = zip_open($src_file)){
    if ($zip){
      $splitter = ($create_zip_name_dir === true) ? "." : "/";
      if($dest_dir === false){
        $dest_dir = substr($src_file, 0, strrpos($src_file, $splitter))."/";
      }
      // 如果不存在 创建目标解压目录
      $this->create_dirs($dest_dir);
       // 对每个文件进行解压
       while ($zip_entry = zip_read($zip)){
          // 文件不在根目录
          $pos_last_slash = strrpos(zip_entry_name($zip_entry), "/");
          if ($pos_last_slash !== false){
            // 创建目录 在末尾带 /
            $this->create_dirs($dest_dir.substr(zip_entry_name($zip_entry), 0, $pos_last_slash+1));
          }
          // 打开包
          if (zip_entry_open($zip,$zip_entry,"r")){
            // 文件名保存在磁盘上
            $file_name = $dest_dir.zip_entry_name($zip_entry);
            // 检查文件是否需要重写
            if ($overwrite === true || $overwrite === false && !is_file($file_name)){
              // 读取压缩文件的内容
              $fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
              @file_put_contents($file_name, $fstream);
              // 设置权限
              chmod($file_name, 0777);
              echo "save: ".$file_name."<br />";
            }
            // 关闭入口
            zip_entry_close($zip_entry);
          }
        }
        // 关闭压缩包
        zip_close($zip);
      }
    }else{
      return false;
    }
    return true;
  }
  /**
  * 创建目录
  */
  public function create_dirs($path){
   if (!is_dir($path)){
     $directory_path = "";
     $directories = explode("/",$path);
     array_pop($directories);
     foreach($directories as $directory){
       $directory_path .= $directory."/";
       if (!is_dir($directory_path)){
         mkdir($directory_path);
         chmod($directory_path, 0777);
       }
     }
   }
  }
}
/*
 using:
 $z = new Unzip();
 $z->unzip("./bootstrap-3.3.4.zip",'./unzipres/', true, false);
*/

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
使用adodb lite解决问题
Dec 31 PHP
php分页示例代码
Mar 19 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
用Zend Encode编写开发PHP程序
Feb 21 PHP
php简单提示框alert封装函数
Aug 08 PHP
如何设置mysql允许外网访问
Jun 04 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
PHP异常处理浅析
May 12 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
PHP版单点登陆实现方案的实例
Nov 17 #PHP
php实现URL加密解密的方法
Nov 17 #PHP
PHP读取zip文件的方法示例
Nov 17 #PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 #PHP
php arsort 数组降序排序详细介绍
Nov 17 #PHP
php array_values 返回数组的值实例详解
Nov 17 #PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 #PHP
You might like
FCKeditor添加自定义按钮
2008/03/27 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
javascript动画浅析
2012/08/30 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
python zip文件 压缩
2008/12/24 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
职务聘任书范文
2014/03/29 职场文书
小学班主任寄语大全
2014/04/04 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
网站推广策划方案
2014/06/04 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
材料采购员岗位职责
2015/04/03 职场文书
婚庆司仪开场白
2015/05/29 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
退伍军人感言
2015/08/01 职场文书
计算机教师工作总结
2015/08/13 职场文书