要使用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文件并返回一个布尔值,指示操作是否成功。