php压缩文件

批量压缩文件不递归压缩文件夹, 压缩完毕后清理原始文件.

php将文件夹打包成zip文件

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);
}

$zip=new ZipArchive();
if($zip->open('images.zip', ZipArchive::CREATE)=== TRUE){
    addFileToZip('images/', $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
    $zip->close(); //关闭处理的zip文件
}

不递归压缩路径文件夹

$zip = new ZipArchive();

if($zip->open('asds.zip')===true){

    $zip->addFile('./Public/Uploads/zip/123.zip', '456.zip'); // 就是这里

}

清空原始文件

// 来源于onethink-dir_delete函数
if (!is_dir($dir)) return FALSE; 
$handle = opendir($dir); //打开目录
while(($file = readdir($handle)) !== false) {
        if($file == '.' || $file == '..')continue;
        $d = $dir.DIRECTORY_SEPARATOR.$file;
        is_dir($d) ? dir_delete($d) : @unlink($d);
}
closedir($handle);
return @rmdir($dir);

相关资料

php将文件夹打包成zip文件
PHP 压缩包详细操作(ZipArchive)

发表评论