PHP使用 zip 扩展压缩文件
在公司遇到一个问题,是使用zip打包用户的上传文件,提供集体下载。
--
第一个想法就是使用exec在Linux进行打包。但是...exec方法吧,你懂得,我不太愿意使用这个函数。
--
于是上网查找,结果就是,我低估了PHP对于IO的操作,给我的教训是,以后遇到什么问题应该先考虑怎么从代码层面解决,如果不行再考虑其他的。
--
安装zip扩展的方法不多说,网上一搜一大片。
--
这里主要说它的简单实用方法【学习东西应该尝试去PHP官方文档查看,那里给出了全面的Demo,不应该一直依赖Baidu.com】
这里也贴出官方对于zip的具体地址:http://php.net/manual/zh/book.zip.php
--
这里简单介绍zip
实例化
$zip = new \ ZipArchive();
open方法,看一下官方对于这个方法的解释
mixed ZipArchive::open ( string $filename [, int $flags ] )
第一个当然是你要打开的zip文件路径,第二个可选参数
记录几个常用参数
ZIPARCHIVE::CREATE
(integer)如果不存在则创建一个zip压缩包。
ZIPARCHIVE::OVERWRITE
(integer)总是以一个新的压缩包开始,此模式下如果已经存在则会被覆盖。
还有很多,这里就不列举了,需要的话可以在文档上去查
这里我们建立我的.zip
$res = $zip->open('test.zip', $zip::CREATE);
循环写入我需要打包的内容
if ($res === TRUE) {
foreach ('打包目录' as '目录文件') {
$zip->addFile('打包文件路径', '名字');
}
$zip->close();
}
这样在你的根目录下就会有一个 text.zip的压缩包。
这里只简单的说明了打包文件的用法,在之后的使用过程中肯定会使用更多的地方。
下面贴上整体代码,里面可能有我的业务部分在里面。筛选一下就可以了
$attachments = those('attachment')->whose('performance')->is($performance); $zip = new \ ZipArchive(); // 创建zip-如果没有则创建
$file_path = DATA_DIR . "/attachment/{$performance->id}/";
$file_name = '绩效考核-'.$performance->name.'-'.time().'.zip'; $res = $zip->open($file_path . $file_name, $zip::CREATE);
if ($res === TRUE) {
foreach ($attachments as $key => $attachment) {
$zip->addFile($attachment->path.'/'.$attachment->name, $attachment->name);
}
$zip->close();
}
PHP使用 zip 扩展压缩文件的更多相关文章
- Dream------Java--ant zip 对压缩文件进行指定位置的修改
ant zip 对压缩文件进行指定位置的修改 实现功能: 对2中文件进行修改: 需求: 在XX文件中,从二进制流的200字节位置开始,往后的30位字节数量.插入一个值 由于涉及到公司内部,不方便写太多 ...
- mac系统中怎么打开rar/zip等压缩文件?
平常使用mac的同学们,可能经常要接受下别人发过来的rar文件,可惜的时mac os x系统默认是不能打开rar文件(不知道以后苹果会支持rar不?),那么我们该如何去解圧rar文件,接下来我将介绍. ...
- linux zip,tar压缩文件夹 忽略 .git 文件夾
linux zip 忽略 .git 文件夾 # zip 命令 zip -r bitvolution.zip bitvolution -x *.git* # tar命令压缩文件夹忽略 .git文件夹 t ...
- 使用java API进行zip递归压缩文件夹以及解压
一.概述 在本篇文章中,给大家介绍一下如何将文件进行zip压缩以及如何对zip包解压.所有这些都是使用Java提供的核心库java.util.zip来实现的. 二.压缩文件 首先我们来学习一个简单的例 ...
- 使用zip.js压缩文件和解压文件
zip.js官方网站为:https://stuk.github.io/jszip/ 在此说明,下面的例子基本上来自官方示例,大家可以做参考,官方示例地址为:https://stuk.github.io ...
- zip格式压缩文件辅助类(ZipHelper)
/// <summary> /// 压缩解压文件 /// </summary> public class ZipHelper { /// <summary> /// ...
- zip file 压缩文件
有时候我们希望 upload 文件后自动压缩, 可以节省空间. 可以使用微软提供的压缩代码 Install-Package System.IO.Compression.ZipFile -Version ...
- zip & tar 压缩文件时排除某个文件夹
确实是用参数 -x aaa bbb 两个文件夹要写全路径. 如 zip -r test.zip test -x /test/aaa/* -x /test/bbb/* 既包含了文件夹,也可以 zip - ...
- 如何在linux下解压缩rar和zip格式的文件压缩包
转载:http://oldboy.blog.51cto.com/2561410/597515 使用apt-get安装: sudo apt-get install rar zip rar使用: 将 ...
随机推荐
- Exception occurred while processing this request, check the log for more information!安装ActiveMq-5.14.1 配置安全验证报错解决
安装ActiveMq-5.14.1 并配置了安全验证成功后,客户端也连接成功了.服务端也能通过http://IP:8161登录到控制台. 但是在点击队列,想要查看队列视图时报错,如下图: 查看日志发 ...
- call()、apply()、bind()
1.均可以改变函数的执行上下文,也就是this值: 2.call() apply() function apply(num1, num2){ return sum.apply(this, [num1 ...
- java多线程例子(生成者和消费者)
Info.cs 商品 public class Info { boolean flag=false; private String name="张三"; private int a ...
- Java单播、广播、多播(组播)
一.通信方式分类 在当前的网络通信中有三种通信模式:单播.广播和多播(组播),其中多播出现时间最晚,同时具备单播和广播的优点. 单播:单台主机与单台主机之间的通信 广播:当台主机与网络中的所有主机通信 ...
- Android textview及其子类
属性: android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) andr ...
- Linux用户态程序计时方式详解
前言 良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较.但要精确测量程序的运行时间并不容易,因为进程切换.中断.共享的多用户.网络流量.高速缓存访问及转移预测等因素都会对程序 ...
- WP8.1学习系列(第二十一章)——本地应用数据
了解如何存储和检索本地应用数据存储中的设置和文件. 路线图: 本主题与其他主题有何关联?请参阅: 使用 C# 或 Visual Basic 的 Windows 运行时应用的路线图 使用 C++ 的 W ...
- 【Spring Boot&& Spring Cloud系列】单点登录SSO概述
概念 单点登录(Singleton Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就能访问所有相互信任的应用系统. 也就 ...
- Promise最佳实践(转)
本文作者:IMWeb dekuchen 原文出处:IMWeb社区 未经同意,禁止转载 有关Promise的几个问题 基础概念 一:什么是Promise 国内比较流行的看法: 阮一峰: Promise ...
- MySQL大数据量分页性能优化
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...