当前位置: 首页 互联网技术

php 自动打包ZIP目录代码

栏目:互联网技术 作者:迅捷网络 时间:2023-03-22 23:04:10
//循环打包目录
<?php
    function addFileToZip($path, $zip) {
        $handler = opendir($path); //打开当前文件夹由$path指定。
 
        while (($filename = readdir($handler)) !== false) {
            if ($filename != "." && $filename != "..") {//文件夹文件名字为'.'和‘..’,不要对他们进行操作
                if (is_dir($path . "/" . $filename)) {// 如果读取的某个对象是文件夹,则递归
 
                    addFileToZip($path . "/" . $filename, $zip);
                } else { //将文件加入zip对象
                    $zip->addFile($path . "/" . $filename);
                }
            }
        }
        @closedir($path);
    }
        $info = opendir('./');
        while (($file = readdir($info)) !== false) {
            
			if(is_dir($file)){
				 if (strcmp($file, ".") == 0 || 
                strcmp($file, "..") == 0) {
		         continue; }
				$zip = new ZipArchive();
				$file1= './'.$file;
    try {
 
        $zip->open($file1.'.zip', ZipArchive::CREATE);
        addFileToZip($file1, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
        $zip->close(); //关闭处理的zip文件
 
    } catch (\Exception $exception) {
        return $exception->getMessage();
    }
            }
        }
        closedir($info);
        
 //文件打包
 $zip  =  new  ZipArchive;  //首先实例化这个类
if  ($zip->open('test.zip')  ===  TRUE)  {  //然后查看是否存在test.zip这个压缩包
    $zip->addFile('too.php');
    $zip->addFile('test.php');  //将too.php和test.php两个文件添加到test.zip压缩包中
    $zip->close();  //关闭
    echo  'ok';
}  else  {
    echo  'failed';
}

//目录打包
function  addFileToZip($path,  $zip)  {
        $handler  =  opendir($path);
 
        while  (($filename  =  readdir($handler))  !==  false)  {
                if  ($filename  !=  "."  &&  $filename  !=  "..")  {
                        if  (is_dir($path  .  "/"  .  $filename))  {
                                addFileToZip($path  .  "/"  .  $filename,  $zip);
                        }  else  {
                                $zip->addFile($path  .  "/"  .  $filename);
                        }
                }
        }
        closedir($handler);
}
 
function  createZipArchive($dir)  {
        $zip  =  new  ZipArchive();
        $zipFileName  =  basename($dir)  .  '.zip';
        if  ($zip->open($zipFileName,  ZipArchive::CREATE)  ===  true)  {
                addFileToZip($dir,  $zip);
                $zip->close();
                return  $zipFileName;
        }  else  {
                return  false;
        }
}
 
//  Usage:
$dirPath  =  '/path/to/directory';
createZipArchive($dirPath);

```上面的代码中,我们首先定义了  `addFileToZip()`  函数来递归地将指定目录下的所有文件和子目录添加到  zip  文件中。然后我们使用新的  `createZipArchive()`  函数来创建  zip  文件并调用  `addFileToZip()`  函数将文件添加到  zip  文件中。最后,我们可以像上面所示一样使用该函数来创建指定目录下的压缩文件。

php 自动打包ZIP目录代码

阅读:525次

我要留言

  

分类栏目