使用ZipArchive可创建ZIP文件,通过open、addFile、close实现多文件压缩;02. 递归扫描目录结构并添加文件以实现整目录压缩;03. 调用extractTo方法将ZIP解压至指定路径;04. 利用numFiles与getNameIndex遍历并列出压缩包内所有文件;05. 通过重建归档方式实现删除特定文件功能。

如果您需要在PHP环境中实现文件的压缩与解压功能,通常是因为需要批量处理用户上传的文件或将多个资源打包为ZIP格式以便下载。以下是几种通过PHP内置类ZipArchive实现ZIP文件操作的具体方法。
本文运行环境:Dell XPS 13,Windows 11
一、创建ZIP压缩文件
使用ZipArchive类可以将一个或多个文件添加到新的ZIP归档中。该方法适用于需要动态生成压缩包的场景,例如用户选择多个文件后触发打包操作。
1、实例化ZipArchive对象,并调用open方法创建一个新的ZIP文件,传入文件路径和ZipArchive::CREATE标志以允许创建不存在的文件。
立即学习“PHP免费学习笔记(深入)”;
2、检查open返回值是否为true,确保文件成功打开或创建。
3、使用addFile方法将指定路径的文件添加到压缩包中,第一个参数是源文件路径,第二个参数是压缩包内的目标名称。
4、重复步骤3以添加多个文件。
5、调用close方法关闭归档并保存压缩文件。
二、从目录批量压缩文件
当需要压缩整个目录时,可通过递归扫描目录结构并将所有文件逐个加入ZIP包。此方法可完整保留目录层级。
1、定义一个递归函数,接收目录路径和ZipArchive对象作为参数。
2、使用scandir获取目录下所有条目,遍历每个条目。
3、跳过"."和".."特殊目录项。
4、构建当前条目的完整路径,判断是否为目录。
5、如果是目录,则递归调用自身,并更新压缩包中的子路径;如果是文件,则使用addFile将其加入归档。
6、在主逻辑中创建ZipArchive实例,打开目标ZIP文件,调用递归函数开始压缩。
7、完成后调用close方法保存结果。
三、解压ZIP文件到指定目录
解压操作用于将ZIP包中的内容释放到服务器的某个目录,常用于插件安装、模板导入等场景。
1、创建ZipArchive实例并使用open方法加载现有的ZIP文件。
2、验证open返回值为true,确认文件可读。
火龙果写作 用火龙果,轻松写作,通过校对、改写、扩展等功能实现高质量内容生产。
106 查看详情
3、调用extractTo方法,传入目标解压路径,该方法会自动创建不存在的目录。
4、检查extractTo的返回值是否为true,判断解压是否成功。
5、调用close关闭归档。
6、可选:遍历解压后的文件列表进行安全校验或权限设置。
四、列出ZIP包内文件列表
在执行解压前查看内容有助于防止恶意文件注入或路径遍历攻击。此方法用于预览归档结构。
1、打开ZIP文件使用open方法。
2、调用numFiles属性获取压缩包中文件总数。
3、使用for循环配合getNameIndex方法遍历每个文件索引。
4、输出每个文件名,可用于日志记录或前端展示。
5、关闭归档释放资源。
五、删除ZIP中的特定文件
ZipArchive本身不支持直接删除成员文件,但可通过重建归档的方式实现“删除”效果。
1、打开原始ZIP文件。
2、创建一个新的临时ZIP文件。
3、遍历原ZIP的所有文件名,使用getNameIndex获取每一项。
4、判断当前文件名是否为需删除的文件,如果不是,则使用addFile将其添加到新归档。
5、完成遍历后关闭两个归档。
6、使用unlink删除原文件,rename将临时文件重命名为原名。
以上就是php编写文件压缩解压的功能_php编写ZIP操作的具体实现的详细内容,更多请关注php中文网其它相关文章!



