php将文件夹内容打包到指定文件夹
<?php
// 指定要打包的文件夹和目标位置
$folderPath = $dir;
$targetPath = $dir.'/'.$title.".zip";
// 创建一个ZipArchive实例
$zip = new ZipArchive();
// 打开一个新的压缩包
if ($zip->open($targetPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === true) {
// 递归添加文件夹中的所有文件和子文件夹
addFolderToZip($folderPath, $zip, basename($folderPath));
// 关闭压缩包
$zip->close();
}
/**
* 递归将文件夹中的所有文件和子文件夹添加到压缩包中
*
* @param string $folderPath 文件夹路径
* @param ZipArchive $zip 压缩包实例
* @param string $parentFolder 父文件夹路径(用于保持相对路径)
*/
function addFolderToZip($folderPath, $zip, $parentFolder = '') {
$handle = opendir($folderPath);
while (($file = readdir($handle)) !== false) {
if ($file != '.' && $file != '..') {
$filePath = $folderPath . '/' . $file;
if (is_file($filePath)) {
// 获取相对于父文件夹的路径
$relativePath = ltrim($parentFolder . '/' . $file, '/');
// 将文件添加到压缩包中,并使用相对路径作为在压缩包中的文件名
$zip->addFile($filePath, $relativePath);
} elseif (is_dir($filePath)) {
// 递归添加子文件夹中的文件和子文件夹
addFolderToZip($filePath, $zip, $parentFolder . '/' . $file);
}
}
}
closedir($handle);
}
?>