温馨提示×

php怎么压缩文件夹

PHP
小亿
81
2024-12-05 05:42:24
栏目: 编程语言

要使用PHP来压缩文件夹,您可以使用ZipArchive类。以下是一个简单的示例,说明如何将一个文件夹压缩到一个ZIP文件中:

<?php
function zipFolder($source, $destination) {
    // 创建一个新的ZipArchive对象
    $zip = new ZipArchive();

    // 打开或创建目标ZIP文件
    if (!$zip->open($destination, ZipArchive::CREATE | ZipArchive::OVERWRITE)) {
        return false;
    }

    // 获取文件夹中的所有文件和子文件夹
    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);

    // 遍历所有文件和子文件夹,并将它们添加到ZIP文件中
    foreach ($files as $file) {
        // 跳过"."和".."目录
        if (in_array($file->getBasename(), ['.', '..'])) {
            continue;
        }

        // 如果是文件,则将其添加到ZIP文件中
        if ($file->isDir()) {
            $zip->addEmptyDir($file->getBasename());
        } else {
            $zip->addFile($file->getPathname(), $file->getBasename());
        }
    }

    // 关闭ZIP文件并保存更改
    $zip->close();

    return true;
}

// 使用示例
$source = 'folder_to_compress'; // 要压缩的文件夹路径
$destination = 'compressed_folder.zip'; // 生成的ZIP文件路径

if (zipFolder($source, $destination)) {
    echo "文件夹已成功压缩到:" . $destination;
} else {
    echo "无法压缩文件夹:" . $destination;
}
?>

这个函数zipFolder接受两个参数:要压缩的源文件夹路径和生成的ZIP文件路径。它使用ZipArchive类来创建一个新的ZIP文件(如果尚不存在)或覆盖现有的ZIP文件。然后,它遍历源文件夹中的所有文件和子文件夹,并将它们添加到ZIP文件中。最后,它关闭ZIP文件并返回一个布尔值,指示操作是否成功。

0