PHP ZipArchive 压缩文件 解压缩

PHP ZipArchive 压缩文件 解压缩

<?php

// 压缩单个文件
function zip_file($filename) {
    if(!is_file($filename)) {
        return false;
    }

    $zip = new ZipArchive();
    $zipName = basename($filename).'.zip';

    // 打开指定压缩包,不存在则创建,存在则覆盖
    if($zip->open($zipName, ZipArchive::CREATE|ZipArchive::OVERWRITE)) {
        // 将文件添加到压缩包中
        if($zip->addFile($filename)) {
            $zip->close();
      // unlink 删除文件
            //@unlink($filename);
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

// 压缩多个文件
function zip_files($zipName, &$files) {
    // 检测压缩包名称是否正确
    $zipExt = strtolower(pathinfo($zipName, PATHINFO_EXTENSION));

    if('zip' !== $zipExt) {
        return false;
    }

    $zip = new ZipArchive();

    if ($zip->open($zipName, ZipArchive::CREATE|ZipArchive::OVERWRITE)) {
        foreach ($files as $file) {
            if(is_file($file)) {
                $zip->addFile($file);
            }
        }
        $zip->close();
        return true;
    } else {
        return false;
    }
}

// 解压缩
function unzip_file($zipName, $dest) {
    //检测要解压压缩包是否存在
    if (!is_file($zipName)) {
        return false;
    }

    //检测目标路径是否存在
    if (!is_dir($dest)) {
        mkdir($dest, 0777, true);
    }

    $zip = new ZipArchive();

    if ($zip->open($zipName)) {
        $zip->extractTo($dest);
        $zip->close();
        return true;
    } else {
        return false;
    }
}

// 压缩单个文件
zip_file("1.php");

// 压缩多个文件
$files = array("1.php", "2.php");
foreach ($files as $file) {
    echo $file . "<br>";
}

zip_files("1.zip", $files);

// 解压缩
unzip_file("2.zip", ".");
?>

 

发表回复

您的电子邮箱地址不会被公开。