PHP---压缩文件夹

简单粗暴,直接上代码:

<?php

/**
 * 压缩文件夹为 ZIP 文件
 * @param string $source 文件夹路径
 * @param string $destination ZIP 文件路径
 * @return bool 成功返回 true,失败返回 false
 */
function zipFolder($source, $destination) {
    if (!extension_loaded('zip') || !file_exists($source)) {
      return false;
    }

    $zip = new ZipArchive();
    if (!$zip->open($destination, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)) {
        return false;
    }

    $source = realpath($source);
    
    if (is_dir($source)) {
        $files = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($source),
            RecursiveIteratorIterator::LEAVES_ONLY
        );

        foreach ($files as $name => $file) {
            // 跳过目录和 . & ..
            if (!$file->isDir()) {
                // 获取文件的相对路径
                $filePath = $file->getRealPath();
                $relativePath = substr($filePath, strlen($source) + 1);

                // 添加文件到 ZIP
                $zip->addFile($filePath, $relativePath);
            }
        }
    } elseif (is_file($source)) {
        $zip->addFile($source, basename($source));
    }

    return $zip->close();
}

// 压缩文件夹
$sourceFolder = '../static';
$zipFile = 'file-box-11.zip';

if (zipFolder($sourceFolder, $zipFile)) {
    echo "文件夹已成功压缩为 {$zipFile}";
} else {
    echo "压缩失败";
}

打完收工!

posted @ 2025-07-03 22:53  帅到要去报警  阅读(18)  评论(0)    收藏  举报