在公司遇到一个问题,是使用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 扩展压缩文件的更多相关文章

  1. Dream------Java--ant zip 对压缩文件进行指定位置的修改

    ant zip 对压缩文件进行指定位置的修改 实现功能: 对2中文件进行修改: 需求: 在XX文件中,从二进制流的200字节位置开始,往后的30位字节数量.插入一个值 由于涉及到公司内部,不方便写太多 ...

  2. mac系统中怎么打开rar/zip等压缩文件?

    平常使用mac的同学们,可能经常要接受下别人发过来的rar文件,可惜的时mac os x系统默认是不能打开rar文件(不知道以后苹果会支持rar不?),那么我们该如何去解圧rar文件,接下来我将介绍. ...

  3. linux zip,tar压缩文件夹 忽略 .git 文件夾

    linux zip 忽略 .git 文件夾 # zip 命令 zip -r bitvolution.zip bitvolution -x *.git* # tar命令压缩文件夹忽略 .git文件夹 t ...

  4. 使用java API进行zip递归压缩文件夹以及解压

    一.概述 在本篇文章中,给大家介绍一下如何将文件进行zip压缩以及如何对zip包解压.所有这些都是使用Java提供的核心库java.util.zip来实现的. 二.压缩文件 首先我们来学习一个简单的例 ...

  5. 使用zip.js压缩文件和解压文件

    zip.js官方网站为:https://stuk.github.io/jszip/ 在此说明,下面的例子基本上来自官方示例,大家可以做参考,官方示例地址为:https://stuk.github.io ...

  6. zip格式压缩文件辅助类(ZipHelper)

    /// <summary> /// 压缩解压文件 /// </summary> public class ZipHelper { /// <summary> /// ...

  7. zip file 压缩文件

    有时候我们希望 upload 文件后自动压缩, 可以节省空间. 可以使用微软提供的压缩代码 Install-Package System.IO.Compression.ZipFile -Version ...

  8. zip & tar 压缩文件时排除某个文件夹

    确实是用参数 -x aaa bbb 两个文件夹要写全路径. 如 zip -r test.zip test -x /test/aaa/* -x /test/bbb/* 既包含了文件夹,也可以 zip - ...

  9. 如何在linux下解压缩rar和zip格式的文件压缩包

    转载:http://oldboy.blog.51cto.com/2561410/597515 使用apt-get安装:  sudo apt-get install  rar  zip rar使用: 将 ...

随机推荐

  1. NTP服务器时间集群借节点之间同步

    1.三个节点时间同步,cdh1,cdh2,cdh3 2.做法:cdh1从网络时间同步,然后cdh2和cdh3从cdh1节点同步 3.安装与自启动设置 yum install ntp 按上面的安装方式在 ...

  2. mac 卸载idea

    卸载MAC中的IDEA Intellij 首先在应用里面右键移动到垃圾桶 然后使用命令行: cd Users/xxx/Library/ 上面的xxx对应你的用户名,然后输入 rm -rf Logs/I ...

  3. SFTP文件下载

    FTP并不是唯一的上传文件的方法,大部分情况下都可使用sftp代替.sftp是什么呢? sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供 ...

  4. RabbitMQ与java、Spring结合实例详细讲解

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文介绍了rabbitMq,提供了如何在Ubuntu下安装RabbitMQ 服务的方法. ...

  5. 【软件分析与挖掘】An Empirical Study of Bugs in Build Process

    摘要 对软件构建过程中所产生的错误(build process bugs)进行实证研究. 5个开源项目:CXF, Camel, Felix,Struts, and Tuscany. 把build pr ...

  6. Volley overview

    https://developer.android.com/training/volley/   需FQ https://developer.android.google.cn/training/vo ...

  7. 关于 ArrayList.toArray() 和 Arrays.asList().toArray()方法

    1.ArrayList.toArray() 理解    * 通过源码我们可以看到返回的是Object类型的数组,失去了原有的实际类型,虽然底层存储是具体类型的对象,这也正体现了文档中说的:该方法起到了 ...

  8. C陷阱与缺陷读书笔记

    2.1理解函数声明 这一章仔细分析了(*(void(*)())0)();这条语句的含义,并且提到了typedef的一种函数指针类型定义的用法. 我们经常用到的typedef用法是用于指定结构体的类型, ...

  9. jvisualvm连接远程应用终于成功,附踩大坑记录!!(一:jstatd方式)

    一.问题概述 连接远程java应用除了jstatd方式,还有jmx方式.不必拘泥于一种,一种不行可以果断尝试另一种,兴许就行了. 姊妹篇在这: jvisualvm连接远程应用终于成功,附踩大坑记录!! ...

  10. Android中openmax实现框架

    OMX中 OMXNodeInstance 负责创建并维护不同的实例,这些实例是根据上面需求创建的,以node作为唯一标识.这样播放器中每个OMXCodec在OMX服务端都对应有了自己的OMXNodeI ...