php使用ZipArchive类压缩文件为zip格式


/**
     * 功能:压缩文件并下载函数
     * files: 需要压缩的文件,destination:压缩包名
     * 注意:要求php5.0+  zip扩展1.7.0+
     */
    function create_zip($files = array(),$destination = '') {
       //这里需要注意该目录是否存在,并且有创建的权限
        $zipname = $destination;
        $valid_files = array();

        //安全处理
        if(is_array($files)) {
            foreach($files as $file) {
                //确认文件是否存在
                if(file_exists($file)) {
                    $valid_files[] = $file;
                }
            }
        }
        if(empty($valid_files)){
            throw new Exception('文件路径不存在');
        }
        //这是要打包的文件地址数组
        $zip = new ZipArchive();
        $res = $zip->open($zipname, ZipArchive::CREATE);
        if ($res === TRUE) {
            foreach ($valid_files as $file) {
            //这里直接用原文件的名字进行打包,也可以直接命名,需要注意如果文件名字一样会导致后面文件覆盖前面的文件,所以建议重新命名
                $new_filename = substr($file, strrpos($file, '/') + 1);
                $zip->addFile($file, $new_filename);
            }

            //关闭文件  
            $zip->close();
            //这里是下载zip文件    
            header("Content-Type: application/zip");
            // header("Content-Length: " . filesize($zipname));
            header("Content-Disposition: attachment; filename="" . basename($zipname) . """);
            // readfile($zipname);
            return $zipname;
        }
    }


本文由 来鹏飞 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论