在php中添加子文件夹到zip文件(laravel)

ee7vknir  于 2022-11-18  发布在  PHP
关注(0)|答案(1)|浏览(252)

我有一个功能,这是工作正常,从文件夹文件创建zip文件。但最近我需要添加子文件夹到我的主文件夹,现在我看到我的功能没有添加这些子文件夹和文件在他们生成的zip文件。
以下是我目前拥有:

$zip = new ZipArchive;

if ($zip->open(public_path('Downloads/new_zip.zip'), ZipArchive::CREATE) === TRUE)
{
    $files = File::files(public_path('new_zip'), true);
    foreach ($files as $key => $value) {
        $relativeNameInZipFile = basename($value);
        $zip->addFile($value, $relativeNameInZipFile);
    }
    $zip->close();
}

通过使用上面的代码,假设我有以下结构:

new_zip
 sample.txt

它的工作很好,为我的文件夹创建zip文件。
"但是"
如果我的文件夹结构类似:

new_zip
 sample.txt
 folder_a
  file_a.txt
 folder_b
  folder_c
   file_c.txt

然后,它将忽略folder_a及以上的所有内容。

有何建议?

5cnsuln7

5cnsuln71#

您可以使用此方法
第一个参数是要压缩其数据的目录的路径
第二个参数是生成的zip文件的路径
对于您的情况:
第一个
此方法将完全再现源目录的文件夹结构。
还有一点需要澄清的是:
1.要将目录“test_dir”和文件“test.txt”添加到存档中,您只需执行以下操作:

$zip->addFile($filePath, "test_dir/test.txt");
  1. RecursiveDirectoryIterator和RecursiveIteratorIterator用于递归遍历源文件夹的目录。它们是标准php库的一部分。您可以在php官方文档中阅读有关它们的信息

相关问题