📅  最后修改于: 2023-12-03 15:03:36.026000             🧑  作者: Mango
在PHP中,我们可以使用ZipArchive扩展类来轻松地压缩文件夹。ZipArchive类提供了一种简单而强大的方法来创建和管理ZIP格式的归档文件。
在使用ZipArchive类之前,必须确保ZipArchive扩展已安装并启用在您的PHP服务器上。可以通过运行以下命令来检查ZipArchive扩展是否已启用:
php -m | grep zip
如果看到Zip,则表示已启用ZipArchive扩展。如果未看到Zip,则需要安装该扩展。您可以使用以下命令安装ZipArchive扩展:
sudo apt-get install php-zip
以下是使用ZipArchive类压缩文件夹的示例代码:
<?php
$zip = new ZipArchive();
$filename = "example.zip";
if ($zip->open($filename, ZipArchive::CREATE) !== TRUE) {
exit("无法打开 <$filename>\n");
}
$dir = "path/to/folder"; //将要被压缩的文件夹路径
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
// 跳过父目录和当前目录
if ($file == "." || $file == "..") {
continue;
}
//将文件添加到归档文件中
if (!$zip->addFile($dir . "/" . $file)) {
exit("无法将文件添加到归档文件中: " . $file . "\n");
}
}
closedir($dh);
}
//完成并关闭归档文件
$zip->close();
echo "归档文件已创建成功!\n";
} else {
exit($dir . " 不是一个文件夹!\n");
}
?>
首先,创建一个ZipArchive实例,并指定要创建的归档文件名。
$zip = new ZipArchive();
$filename = "example.zip";
接下来,使用open方法打开归档文件。
if ($zip->open($filename, ZipArchive::CREATE) !== TRUE) {
exit("无法打开 <$filename>\n");
}
在处理要压缩的文件夹之前,需要确保该文件夹实际存在并且是一个文件夹,而不是文件。
$dir = "path/to/folder";
if (is_dir($dir)) { //检查是否是文件夹
// Do something...
} else {
exit($dir . " 不是一个文件夹!\n");
}
如果要压缩的文件夹存在且是文件夹,则需要遍历该文件夹中的所有文件,并将每个文件添加到归档文件中。
if ($dh = opendir($dir)) { //打开文件夹
while (($file = readdir($dh)) !== false) {
// 跳过父目录和当前目录
if ($file == "." || $file == "..") {
continue;
}
//将文件添加到归档文件中
if (!$zip->addFile($dir . "/" . $file)) {
exit("无法将文件添加到归档文件中: " . $file . "\n");
}
}
closedir($dh);
}
最后,完成和关闭ZipArchive对象,这会将归档文件从内存写入磁盘。
$zip->close();
echo "归档文件已创建成功!\n";
使用PHP的ZipArchive类可以轻松地创建和管理ZIP格式的归档文件。只需遍历要压缩的文件夹中的所有文件,并将它们添加到ZipArchive对象中即可。在完成添加所有文件后,将ZipArchive对象写入磁盘即可完成压缩。