• PHP使用 zip 扩展压缩文件


    在公司遇到一个问题,是使用zip打包用户的上传文件,提供集体下载。

    --

    第一个想法就是使用exec在Linux进行打包。但是...exec方法吧,你懂得,我不太愿意使用这个函数。

    --

    于是上网查找,结果就是,我低估了PHP对于IO的操作,给我的教训是,以后遇到什么问题应该先考虑怎么从代码层面解决,如果不行再考虑其他的。

    --

    安装zip扩展的方法不多说,网上一搜一大片。

    --

    这里主要说它的简单实用方法【学习东西应该尝试去PHP官方文档查看,那里给出了全面的Demo,不应该一直依赖Baidu.com】

    这里也贴出官方对于zip的具体地址:http://php.net/manual/zh/book.zip.php

    --

    这里简单介绍zip

      实例化

    $zip = new  ZipArchive();
    

      open方法,看一下官方对于这个方法的解释

    mixed ZipArchive::open ( string $filename [, int $flags ] )
    

      第一个当然是你要打开的zip文件路径,第二个可选参数

        记录几个常用参数

          ZIPARCHIVE::CREATE (integer)如果不存在则创建一个zip压缩包。

          ZIPARCHIVE::OVERWRITE (integer)总是以一个新的压缩包开始,此模式下如果已经存在则会被覆盖。

        还有很多,这里就不列举了,需要的话可以在文档上去查

      这里我们建立我的.zip

    $res = $zip->open('test.zip', $zip::CREATE);

      循环写入我需要打包的内容

    if ($res === TRUE) {
        foreach ('打包目录' as '目录文件') {
            $zip->addFile('打包文件路径', '名字');
        }
        $zip->close();
    }
    

      这样在你的根目录下就会有一个 text.zip的压缩包。

      这里只简单的说明了打包文件的用法,在之后的使用过程中肯定会使用更多的地方。

      下面贴上整体代码,里面可能有我的业务部分在里面。筛选一下就可以了

            $attachments = those('attachment')->whose('performance')->is($performance);
    
            $zip = new  ZipArchive();
    
            // 创建zip-如果没有则创建
            $file_path = DATA_DIR . "/attachment/{$performance->id}/";
            $file_name = '绩效考核-'.$performance->name.'-'.time().'.zip';
    
            $res = $zip->open($file_path . $file_name, $zip::CREATE);
            if ($res === TRUE) {
                foreach ($attachments as $key => $attachment) {
                    $zip->addFile($attachment->path.'/'.$attachment->name, $attachment->name);
                }
                $zip->close();
            }
    

      

  • 相关阅读:
    通过w3c方式 读取xml内容
    ssm项目 maven 项目pon.xml 配置
    myeclipse 2014新建maven web 项目步骤
    Maven学习
    常用正则学习
    Maven 那点事儿
    Chrome 里的请求报错 " Provisional headers are shown"
    php框架thinkphp3.2.3 配置文件bug
    $_GET $_POST $_REQUEST
    php检测函数
  • 原文地址:https://www.cnblogs.com/25-lH/p/8568753.html
Copyright © 2020-2023  润新知