phpzip压缩原理(PHP生成zip压缩包的常用方法示例)
类别:编程学习 浏览量:742
时间:2021-11-03 15:41:17 phpzip压缩原理
PHP生成zip压缩包的常用方法示例本文实例讲述了PHP生成zip压缩包的常用方法。分享给大家供大家参考,具体如下:
压缩一个文件
我们将一个文件生成一个压缩包。
|
<?php $path = "c:/wamp/www/log.txt" ; $filename = "test.zip" ; $zip = new ZipArchive(); $zip ->open( $filename ,ZipArchive::CREATE); //打开压缩包 $zip ->addFile( $path , basename ( $path )); //向压缩包中添加文件 $zip ->close(); //关闭压缩包 |
上述代码将c:/wamp/www/log.txt文件压缩生成了test.zip,并保存在当前目录。
压缩多个文件
压缩多个文件,其实就是addFile执行多次,可以通过数组的遍历来实现。
|
<?php $fileList = array ( "c:/wamp/www/log.txt" , "c:/wamp/www/weixin.class.php" ); $filename = "test.zip" ; $zip = new ZipArchive(); $zip ->open( $filename ,ZipArchive::CREATE); //打开压缩包 foreach ( $fileList as $file ){ $zip ->addFile( $file , basename ( $file )); //向压缩包中添加文件 } $zip ->close(); //关闭压缩包 |
压缩一个目录
|
<?php function addFileToZip( $path , $zip ){ $handler =opendir( $path ); //打开当前文件夹由$path指定。 while (( $filename =readdir( $handler ))!==false){ if ( $filename != "." && $filename != ".." ){ //文件夹文件名字为'.'和‘..',不要对他们进行操作 if ( is_dir ( $path . "/" . $filename )){ // 如果读取的某个对象是文件夹,则递归 addFileToZip( $path . "/" . $filename , $zip ); } else { //将文件加入zip对象 $zip ->addFile( $path . "/" . $filename ); } } } @ closedir ( $path ); } $zip = new ZipArchive(); if ( $zip ->open( 'rsa.zip' , ZipArchive::OVERWRITE)=== TRUE){ addFileToZip( 'rsa/' , $zip ); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法 $zip ->close(); //关闭处理的zip文件 } |
压缩并下载zip包
我的时候,我们需要打包之后,提供下载,然后删除压缩包。
可以分为以下几步:
- 判断给出的路径,是文件夹,还是文件。文件夹还需要遍历添加文件。
- 设置相关文件头,并使用readfile函数提供下载。
- 使用unlink函数删除压缩包
|
<?php function addFileToZip( $path , $zip ){ $handler =opendir( $path ); //打开当前文件夹由$path指定。 while (( $filename =readdir( $handler ))!==false){ if ( $filename != "." && $filename != ".." ){ //文件夹文件名字为'.'和‘..',不要对他们进行操作 if ( is_dir ( $path . "/" . $filename )){ // 如果读取的某个对象是文件夹,则递归 addFileToZip( $path . "/" . $filename , $zip ); } else { //将文件加入zip对象 $zip ->addFile( $path . "/" . $filename ); } } } @ closedir ( $path ); } $zip = new ZipArchive(); if ( $zip ->open( 'rsa.zip' , ZipArchive::OVERWRITE)=== TRUE){ $path = 'rsa/' ; if ( is_dir ( $path )){ //给出文件夹,打包文件夹 addFileToZip( $path , $zip ); } else if ( is_array ( $path )){ //以数组形式给出文件路径 foreach ( $path as $file ){ $zip ->addFile( $file ); } } else { //只给出一个文件 $zip ->addFile( $path ); } $zip ->close(); //关闭处理的zip文件 } |
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/koastal/article/details/51944982
您可能感兴趣
- php依赖注入和控制反转的区别(php反射学习之依赖注入示例)
- php中最常用的标记符(php中目录操作opendir、readdir及scandir用法示例)
- php防sql注入(万能密码的SQL注入漏洞其PHP环境搭建及防御手段)
- phpstudy服务器怎么设置(phpstudy2018 访问目录服务权限问题)
- php去水印方法(PHP开发的文字水印,缩略图,图片水印实现类与用法示例)
- thinkphp5.1插件实现(Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例)
- php各个模式使用场景(PHP 并发场景的几种解决方案)
- php建造者模式实例(PHP工厂模式、单例模式与注册树模式实例详解)
- mac电脑安装php环境(Mac下搭建php开发环境教程)
- php私有函数怎么调(php intval函数用法总结)
- docker下怎么搭建一个php环境(Docker搭建php环境教程详解)
- thinkphp数据库使用(thinkphp3.2同时连接两个数据库的简单方法)
- php数组详解(php数组和链表的区别总结)
- php防session劫持(使用SMB共享来绕过php远程文件包含的限制执行RFI的利用)
- php 模拟登录验证码demo(PHP 模拟登陆功能实例详解)
- thinkphp微信开发教程(微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
- 泰剧《爱欲之神》Boom kitkong和Great合体杂志(泰剧爱欲之神Boomkitkong和Great合体杂志)
- 素人恋爱综艺火药味十足 男生为赢得芳心集体扯头花,真是出好戏(素人恋爱综艺火药味十足)
- 《囧妈》为何受抵制 春节七部影片撤档背后的责任与博弈(囧妈为何受抵制)
- 提醒 2019年起河南驾考要开设科目五 官方回应来了(2019年起河南驾考要开设科目五)
- 省 市书法家协会 送万福进万家 活动走进禹州美丽乡村(省市书法家协会)
热门推荐
- linux目录操作功能(Linux 目录结构详细介绍)
- SQLServer将数据导出为SQL脚本
- 怎么写css效果最好(提高CSS代码效率的编写技巧)
- ajax 向后台传递数组参数
- idea里面怎么配置tomcat(intellij idea 使用Tomcat部署的项目位置在哪)
- 常用sql语句大全总结(程序员最实用的 SQL 语句收藏,看完这篇就够了)
- laravel数据迁移(Laravel框架实现的上传图片到七牛功能详解)
- python 3.10 循环语法(Python3.4学习笔记之常用操作符,条件分支和循环用法示例)
- 如何增大docker内存使用(docker 内存监控与压测方式)
- 如何让API接口更安全
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9