Zip扩展能够读取或写入 ZIP 压缩档案及其中的文件。
安装Zip扩展
在Ubuntu下通过apt安装zip扩展,这里以php7.2为例,命令如下
apt-get install php7.2-zip -y
更多安装方式见官方:PHP: 安装 - Manual,安装完成后,调用phpinfo查看,如果信息包含以下信息
zip
Zip | enabled |
Zip version | 1.15.4 |
Libzip version | 1.1.2 |
说明已经安装成功,版本号会有所不同。
ZipArchive 类(部分)
ZipArchive::addEmptyDir — 添加空目录到压缩包
ZipArchive::addEmptyDir(string $dirname, int $flags = 0): bool
ZipArchive::addFile — 通过给出的文件路径添加压缩包
ZipArchive::addFile(
string $filepath
,
string $entryname
= "",
int $start
= 0,
int $length
= 0,
int $flags
= ZipArchive::FL_OVERWRITE
): bool
ZipArchive::addFromString — 把内容添加到压缩包的文件里
ZipArchive::addFromString(string $name, string $content, int $flags = ZipArchive::FL_OVERWRITE): bool
ZipArchive::close — 关闭当前进程 (打开的或者新建的)
ZipArchive::close(): bool
ZipArchive::extractTo — 解压缩文件
ZipArchive::extractTo(string $pathto, array|string|null $files = null): bool
ZipArchive::open — 打开或新建压缩文件
ZipArchive::open(string $filename, int $flags = 0): bool|int
ZipArchive::setPassword — 设置解压缩密码
ZipArchive::setPassword(string $password): bool
ZipArchive::renameName — 压缩包里的文件重命名
ZipArchive::renameName(string $name, string $new_name): bool
更多类说明参考官网PHP: Zip - Manual
TP使用Zip示例
首先要打开或者新建一个压缩文件,命令如下
$zip = new \ZipArchive();
$zippath=$_SERVER['DOCUMENT_ROOT'].'/';
$flag = $zip->open($zippath.'out.zip', \ZipArchive::CREATE|\ZipArchive::OVERWRITE);
新建一个Zip类赋值给$zip,$zippath为当前站点根目录,$flag为创建或打开zip文件返回bool值,成功返回为True。创建成功并操作完成后会在根目录下生成一个out.zip文件。
添加文件、内容及文件改名并生成压缩包的完整示例,命令如下
$zip = new \ZipArchive();
$zippath=$_SERVER['DOCUMENT_ROOT'].'/';
$res= $zip->open($zippath.'out.zip', \ZipArchive::CREATE|\ZipArchive::OVERWRITE);
if($res === True){
$zip->addFromString('test.txt', '这是一个测试文本');
$zip->addFile('data.txt', 'entryname.txt');
$zip->renameName('entryname.txt','newname.txt');
$zip->close();
echo '成功';
}else{
echo '失败, 错误代码:' . $res;
}
添加文件的时候也可以直接重名文件名。
到这里,TP基于Zip扩展创建压缩文件完成了。