ZipArchive,我需要创建新文件并覆盖现有文件

时间:2018-03-08 02:45:27

标签: php ziparchive

我正在使用php ZipArchive,我遇到了一个简单的问题。

我需要创建新文件,如果存在具有该名称的现有文件,我需要覆盖它。

我的问题是,如果我使用此代码

if ($zip->open($packageFileName, ZipArchive::OVERWRITE) === TRUE)

它将覆盖任何具有相同名称的现有文件,但是如果具有这样名称的文件不存在则没有任何反应,如果case返回false并且我在zip文件中填入了if if case中的文件,但是因为if file是不在上面的磁盘上失败并且没有创建文件。

如果我这样做

if ($zip->open($packageFileName, ZipArchive::CREATE) === TRUE)

它将返回true并且文件将被创建或更新,但我不想更新文件,我需要覆盖该文件。

所以我被困了一下,我想要覆盖文件,如果它不存在我想要它创建,有没有办法在一行中执行此操作,所以我不必在多行中检查这个,我检查是否文件存在,然后选择CREATE或OVERWRITE,为什么没有CREATE_OVERWRITE常量?

1 个答案:

答案 0 :(得分:3)

就像PHP中的错误代码一样,zip标志也是按位添加意味着您可以使用OR (|)组合它们来做“更多”

if ($zip->open($packageFileName,  (ZipArchive::CREATE | ZipArchive::OVERWRITE) ))

如果上面没有其他地方会覆盖,上面会创建一个zip。这就是你如何做“CREATE_OVERWRITE”