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();
        }

  

原文地址:https://www.cnblogs.com/25-lH/p/8568753.html

时间: 2024-11-10 09:46:39

PHP使用 zip 扩展压缩文件的相关文章

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

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

C#调用Ionic.Zip类压缩文件夹

Note:网上找到的资源记录一下 遗留问题:保存的zip文件含有多级目录,暂时未找到去除多级目录的方法 /// <summary> /// 压缩ZIP文件 /// 支持多文件和多目录,或是多文件和多目录一起压缩 /// </summary> /// <param name="list">待压缩的文件或目录集合</param> /// <param name="strZipName">压缩后的文件名</

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

zip.js官方网站为:https://stuk.github.io/jszip/ 在此说明,下面的例子基本上来自官方示例,大家可以做参考,官方示例地址为:https://stuk.github.io/jszip/documentation/examples.html 官方例子支持在线演示效果. 研究的目的是:如何获取zip包中的信息并读取传输(其实使用JAVA或者node.js更容易实现,之所以使用js也是因为业务的特殊性). 准备库: jszip.js可以去该地址下载:https://git

zip &amp; tar 压缩文件时排除某个文件夹

确实是用参数 -x aaa bbb 两个文件夹要写全路径. 如 zip -r test.zip test -x /test/aaa/* -x /test/bbb/* 既包含了文件夹,也可以 zip -r test.zip test -x /test/*.mp4(还未尝试, 不知道可否删除递归文件夹中.mp4文件),压缩时排除指定文件. tar -zcvf test.tar.gz --exclude=aaa --exclude==bbb test 其他参考:http://www.cnblogs.c

压缩文件zip格式,提供下载。

package com.bstd.sys.server; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java

Java ZIP压缩文件使用总结

做Java Web开发,有时候遇到将多个文件或者文件夹压缩成一个.zip文件,供前端下载.Java的JDK中提供一个java.util.zip的接口,供大家使用.如下图: 图上就是Java 的JDK提供的接口,但是压缩文件或者文件夹的时候,怎么使用上面的接口呢?下面我给出几个相关的接口,这些接口是下面压缩文件或者文件夹过程中使用到的. java.util.zip.ZipEntry; java.util.zip.ZipOutputStream; 下面的压缩过程主要是通过这两个接口压缩文件或者文件夹

python zip压缩文件并设置密码

zip     -P "123" -r  app.zip         app压缩文件 密码 压缩后名称 压缩对象名称 def zipDir(dirpath, outFullName, password=None): """ 压缩指定文件夹 :param dirpath: 目标文件夹路径 :param outFullName: 保存路径+xxxx.zip :return: """ import os if password:

Linux 压缩文件的命令行总结

Linux压缩文件的读取 ·    *.Z       compress 程序压缩的档案: ·    *.bz2     bzip2 程序压缩的档案: ·    *.gz      gzip 程序压缩的档案: ·    *.tar     tar 程序打包的数据,并没有压缩过: ·    *.tar.gz  tar 程序打包的档案,其中并且经过 gzip 的压缩! ·    *.zip     zip 程序压缩文件 ·    *.rar     rar 程序压缩文件 Compress压缩文件 [

linux 压缩文件的命令总结

Linux压缩文件的读取 ·    *.Z       compress 程序压缩的档案: ·    *.bz2     bzip2 程序压缩的档案: ·    *.gz      gzip 程序压缩的档案: ·    *.tar     tar 程序打包的数据,并没有压缩过: ·    *.tar.gz  tar 程序打包的档案,其中并且经过 gzip 的压缩! ·    *.zip     zip 程序压缩文件 ·    *.rar     rar 程序压缩文件 Compress压缩文件 [