PhalApi-Zip--压缩文件处理类

#PhalApi-Zip -- 压缩文件处理类

##前言

这是笔者在工作中,同事找到的一个比较不错的文件压缩类,也经过了实际的使用很不错所以分享处理,特此鸣谢:@牧鱼人

附上:

官网地址:http://www.phalapi.net/

开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release

开源中国拓展Git地址:http://git.oschina.net/dogstar/PhalApi-Library

##1. 安装使用

此扩展只需要简单的把文件放到Library目录下即可使用使用方法如下:

 $zip = new Zip_Lite();

遍历指定文件夹

 $zip  = new Zip_Lite();
 $filelist = $zip->visitFile(文件夹路径);
 print "当前文件夹的文件:<p>\r\n";
 foreach($filelist as $file)
     printf("%s<br>\r\n", $file);

压缩到服务器

$zip = new Zip_Lite();
$zip->Zip("需压缩的文件所在目录", "ZIP压缩文件名");

压缩并直接下载

$zip = new Zip_Lite();
$zip->ZipAndDownload("需压缩的文件所在目录");

解压文件

 $zip   = new Zip_Lite();
 $zipfile   = "ZIP压缩文件名";
 $savepath  = "解压缩目录名";
 $zipfile   = $unzipfile;
 $savepath  = $unziptarget;
 $array     = $zip->GetZipInnerFilesInfo($zipfile);
 $filecount = 0;
 $dircount  = 0;
 $failfiles = array();
 set_time_limit(0);  // 修改为不限制超时时间(默认为30秒)

 for($i=0; $i<count($array); $i++) {
     if($array[$i][folder] == 0){
         if($zip->unZip($zipfile, $savepath, $i) > 0){
             $filecount++;
         }else{
             $failfiles[] = $array[$i][filename];
         }
     }else{
         $dircount++;
     }
 }
 set_time_limit(30);
printf("文件夹:%d&nbsp;&nbsp;&nbsp;&nbsp;解压文件:%d&nbsp;&nbsp;&nbsp;&nbsp;失败:%d<br>\r\n", $dircount, $filecount, count($failfiles));
if(count($failfiles) > 0){
    foreach($failfiles as $file){
        printf("&middot;%s<br>\r\n", $file);
    }
}

获取被压缩文件的信息

$zip = new Zip_Lite();
$array = $zip->GetZipInnerFilesInfo(ZIP压缩文件名);
for($i=0; $i<count($array); $i++) {
    printf("<b>&middot;%s</b><br>\r\n", $array[$i][filename]);
    foreach($array[$i] as $key => $value)
       printf("%s => %s<br>\r\n", $key, $value);
    print "\r\n<p>------------------------------------<p>\r\n\r\n";
}

##2. 总结

希望此拓展能够给大家带来方便以及实用!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

官网QQ交流群:421032344 欢迎大家的加入!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

HTML5的Message

Message API最大的优势是跨域发送消息。关于Message更多的信息请参考:

2691
来自专栏酷玩时刻

微信公众号开发之如何使用JSSDK

使用JSSDK主要包括 1、判断当前客户端版本是否支持指定JS接口、 2、分享接口(微信认证) 3、图像接口 4、音频接口 5、智能接口(识别语音并返...

4283
来自专栏一个爱瞎折腾的程序猿

常用cmd代码片段及.net core打包脚本分享

保存:set currentPath=%cd% 输出:echo %currentPath

993
来自专栏青玉伏案

iOS开发之App主题切换完整解决方案(Swift版)

本篇博客就来介绍一下iOS App中主题切换的常规做法,当然本篇博客中只是提到了一种主题切换的方法,当然还有其他方法,在此就不做过多赘述了。本篇博客中所涉及的D...

24410
来自专栏C/C++基础

Linux resolv.conf简介

resolv.conf是各种操作系统域名系统解析器(DNS Resolver)的配置文件。每当一个程序需要通过域名来访问Internet上面的其它主机时,需要利...

1592
来自专栏沈唁志

在Linux中vim的用法

2072
来自专栏PhpZendo

Nginx 烹调书

本书是「Complete Nginx Cookbook」一书的部分中英文对照翻译版本。

1051
来自专栏前端那些事

Express4.x API (一):application (译)

写在前面 Express文档核心的四大部分app,request,response,router,基本上已经完成。简单的总结 通过调用express()返回得到...

25010
来自专栏君赏技术博客

【已解决】对于 XCTest 测试中怎么让测试用例顺序执行?

我想写一些常规的测试用例,比如注册 登录 查看商品 添加购物车 check out 下单 支付等是否正常。

2072
来自专栏运维小白

5.5 进入编辑模式

编辑模式:就是进入到可以编辑文本文件的模式 ? 进入编辑模式方法: i ,直接在当前光标处进入编辑模式 I (大写I),光标直接移动到该行的行首,并进入编辑...

1947

扫码关注云+社区

领取腾讯云代金券