文档章节

php 压缩zip

 自信的水草
发布于 2016/12/13 16:44
字数 326
阅读 17
收藏 1

基本网上找的都是将子文件夹的文件递归出来放入根目录,但我需要保留文件夹本身的结构,终于找到一个自己需要的,修改了一些代码,让该方法可以排除或包含需要的文件

 

public function test(){
    $zip = new \ZipArchive();
    $path_zip = $_SERVER['DOCUMENT_ROOT'] . '/Application/Test/testzip/';
    $path_files = $_SERVER['DOCUMENT_ROOT'] . '/Application/Test/testPackage/';
    if( $zip->open( $path_zip . 'test.zip', \ZipArchive::OVERWRITE ) === true ){
        $this->createZip(opendir($path_files),$zip,$path_files, array( array( '1.txt' ), true ) );
        $zip->close();
    }
}

/*压缩多级目录
    $openFile:目录句柄
    $zipObj:Zip对象
    $sourceAbso:源文件夹路径
    $excludeOrInclude:包含或排除,第一个参数为数组,第二个参数代表方式,不填是包含,为true是排除
*/
private function createZip($openFile,$zipObj,$sourceAbso, $excludeOrInclude=array() , $newRelat = '')
{
    while(($file = readdir($openFile)) != false)
    {
        if($file=="." || $file=="..")
            continue;

        if( $excludeOrInclude ){
            if( isset( $excludeOrInclude[0] ) && is_array( $excludeOrInclude[0] ) && $excludeOrInclude[0] ){

                //第二的参数为true代表排除,否则代表包含,默认为包含
                if( isset( $excludeOrInclude[1] ) && $excludeOrInclude[1] == true ){
                    if( in_array( $file, $excludeOrInclude[0] ) ){
                        continue;
                    }
                }else{
                    if( ! in_array( $file, $excludeOrInclude[0] ) ){
                        continue;
                    }
                }
            }
        }

        /*源目录路径(绝对路径)*/
        $sourceTemp = $sourceAbso.'/'.$file;
        /*目标目录路径(相对路径)*/
        $newTemp = $newRelat==''?$file:$newRelat.'/'.$file;
        if(is_dir($sourceTemp))
        {
            //echo '创建'.$newTemp.'文件夹<br/>';
            $zipObj->addEmptyDir($newTemp);/*这里注意:php只需传递一个文件夹名称路径即可*/
            $this->createZip(opendir($sourceTemp),$zipObj,$sourceTemp,$newTemp);
        }
        if(is_file($sourceTemp))
        {
            //echo '创建'.$newTemp.'文件<br/>';
            $zipObj->addFile($sourceTemp,$newTemp);
        }
    }
}

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 62
码字总数 10158
作品 0
南京
PHP自带ZIP压缩、解压缩类ZipArchiv介绍及使用

--------------------- 使用ZipArchive对象的前提 --------------------- 要使用该PHP扩展类,需要(PHP 5 >= 5.2.0, PECL zip >= 1.1.0),部分方法需要 PHP 5.2.+,且php.ini配置支持zip 对于......

lixiaokai2008
2013/10/31
0
0
在线解压压缩--PclZip

PHP在线快速压缩解压ZIP文件 利用pclzip2.8.2类 做的,当pclzip有更新时可直接覆盖. 利用的时当前最新版类,很好用的哦, 支持在线解压zip文件,在线压缩zip文件 PclZip能够压缩与解压缩Zip格式的...

匿名
2012/08/19
1K
0
PHP的ZIP压缩处理包 TbsZip 2.6 发布

TbsZip 是一个 PHP 的类用来读写 Zip 压缩文件包,该类无需 PHP 扩展或者是临时文件。TbsZip 可以对压缩文档中的文件进行读、写、修改和删除操作。详细使用方法请看这里。 PHP的ZIP压缩处理包...

老枪
2011/06/07
441
0
PHP压缩解压缩类:PclZip

PclZip是一个强大的压缩与解压缩zip文件的PHP类,PclZip library不仅能够压缩与解压缩Zip格式的文件;还能出压缩档的内容。同时也可以对现有的ZIP包进行添加或删除文件。 官方网站:http://...

Minho
2012/02/08
0
0
小蚂蚁学习Linux(6)——压缩与解压缩命令详解

在Linux中常用的压缩格式有以下几个:.zip .gz .bz2 .tar.gz tar.bz2。首先先解释前三个。 .zip格式的压缩: zip 压缩文件名 原文件名 如:zip abc.zip abc 后缀名是一定要写的,虽然Linux不...

嗜学如命的小蚂蚁
2015/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
6
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
12
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
18
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
12
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部