要使用PHP来压缩文件夹,您可以使用ZipArchive
类。以下是一个简单的示例,说明如何将一个文件夹压缩到一个ZIP文件中:
$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文件并返回一个布尔值,指示操作是否成功。