PHP –创建ZIP文件会导致ZIP文件本身压缩

时间:2020-06-04 21:02:04

标签: php zip

我用来从多个文件中创建一个ZIP文件的脚本会产生一个俄罗斯ZIP娃娃:它不是在覆盖具有相同名称的当前ZIP文件,而是在压缩现有的ZIP文件以及实际文件。

在CMS中进行页面更新(=文件上传/删除)后,将创建ZIP文件(始终具有相同的名称)。

尽管这是CMS的语法,但我希望它是可读的;

'file.create:after' => function ($file) {
      $page = $file->page();
      $files_to_zip = $page->files(); // array

      $parent_folder = $page->parent()->dirname(); // string
      $target_folder = $page->dirname(); // string

      $zip = new ZipArchive();

      $zip_file = "content/" . $parent_folder . "/" . $target_folder . "/somefile.zip";

      $zip->open($zip_file, (ZipArchive::CREATE | ZipArchive::OVERWRITE));

      foreach ($files_to_zip as $file_to_zip) {
        $zip->addFile($file_to_zip->root(), basename($file_to_zip->filename()));
      }

      $zip->close();
}

我是否缺少有关文件覆盖(如果存在)的内容?

谢谢您的输入!

1 个答案:

答案 0 :(得分:0)

“轮换”之后,您需要致电Statistics.objects.exclude(pk__in=list(stats)).delete()

您需要手动“旋转” zip存档,或者只是将其删除(不建议使用,因为它可能会导致数据丢失)

$file->page->files()
相关问题