PHP ZipArchive::open() 方法用于打开新的或现有的 zip 文件以进行读取、写入或修改.
自 libzip 1.6.0 起,空文件不再是有效的存档。
语法
public ZipArchive::open(filename, flags)
参数
filename | 必填。 指定要打开的 ZIP 存档的文件名。 |
flags | 可选。 指定用于打开存档的模式。它可以采用以下值:
|
返回值
成功时返回 true,或者出现以下错误代码之一:
- ZipArchive::ER_EXISTS - 文件已存在。
- ZipArchive::ER_INCONS - Zip 存档不一致。
- ZipArchive::ER_INVAL - 参数无效。
- ZipArchive::ER_MEMORY - Malloc 失败。
- ZipArchive::ER_NOENT - 没有这样的文件。
- ZipArchive::ER_NOZIP - 不是 zip 存档。
- ZipArchive::ER_OPEN - 无法打开文件。
- ZipArchive::ER_READ - 读取错误。
- ZipArchive::ER_SEEK - 查找错误。
示例:打开并解压
假设我们有一个名为 example.zip 的 zip 文件,其中包含以下文件:
test.txt
example.csv
image.png
下面的示例演示了如何在指定位置打开并提取此 zip 文件内容:
<?php
$zip = new ZipArchive;
$result = $zip->open('example.zip');
if ($result === TRUE) {
$zip->extractTo('/example/');
$zip->close();
echo 'Zip file opened and extracted successfully.';
} else {
echo 'Opening of the Zip file failed.';
}
?>
上述代码的输出将是:
Zip file opened and extracted successfully.
示例:创建一个存档
下面的示例描述了如何创建存档。
<?php
$zip = new ZipArchive;
$result = $zip->open('example.zip', ZipArchive::CREATE);
if ($result === TRUE) {
//将文件添加到存档中
$zip->addFromString('test.txt', 'file content goes here');
$zip->addFile('/path/example.pdf', 'newname.pdf');
$zip->close();
echo 'Zip file created successfully.';
} else {
echo 'Zip file can not be created.';
}
?>
上述代码的输出将是:
Zip file created successfully.
示例:创建临时存档
考虑下面的示例,其中此方法用于创建临时存档。
<?php
$name = tempnam(sys_get_temp_dir(), "FOO");
$zip = new ZipArchive;
//截断为空文件无效
$result = $zip->open($name, ZipArchive::OVERWRITE);
if ($result === TRUE) {
$zip->addFile('/path/example.pdf', 'newname.pdf');
$zip->close();
echo 'Zip file created successfully.';
} else {
echo 'Zip file can not be created.';
}
?>
上述代码的输出将是:
Zip file created successfully.