PHP操作ZIP之ZipArchive类以及如何避免生成压缩文件带有目录层级的问题
ZipArchive
类在 PHP 中用于创建、读取和修改 ZIP 文件。要创建 ZIP 文件并避免生成带有目录层次结构的压缩文件,可以使用 addFile
方法直接添加文件,而不是使用 addGlob
或 addPattern
方法添加整个目录。
以下是一个简单的例子,演示如何使用 ZipArchive
类创建不包含目录层次的 ZIP 文件:
$zip = new ZipArchive();
$zipFileName = 'myarchive.zip';
// 打开一个新的 ZIP 文件
if ($zip->open($zipFileName, ZipArchive::CREATE) !== TRUE) {
exit("无法打开 <$zipFileName>\n");
}
// 添加文件到 ZIP 文件中,不包含目录层次
$filesToZip = ['file1.txt', 'file2.jpg', 'file3.pdf']; // 需要压缩的文件列表
foreach ($filesToZip as $file) {
if (file_exists($file)) {
$zip->addFile($file, basename($file)); // 添加文件,第二个参数为添加到 ZIP 文件后的文件名
}
}
// 关闭 ZIP 文件
$zip->close();
echo "ZIP 文件 '$zipFileName' 创建成功。\n";
在这个例子中,$filesToZip
数组包含了需要压缩的文件列表。使用 addFile
方法时,第二个参数是这些文件在 ZIP 文件中的名称,不包含它们原始的目录路径。这样,压缩文件在解压后不会包含原始的目录层次结构。
评论已关闭