我用来从多个文件中创建一个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();
}
我是否缺少有关文件覆盖(如果存在)的内容?
谢谢您的输入!
答案 0 :(得分:0)
“轮换”之后,您需要致电
Statistics.objects.exclude(pk__in=list(stats)).delete()
您需要手动“旋转” zip存档,或者只是将其删除(不建议使用,因为它可能会导致数据丢失)
$file->page->files()