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对象
                /*
                  *  addFile(参数1,参数2)
                  *  参数1:文件完整路径(含文件名)
                  *  参数2:自定义新文件名(不含路径就直接加在压缩包根目录,否则将在压缩包中自动创建对应目录)
                  *  */
                $zip->addFile($path."/".$filename, $filename);
            }
        }
    }
    @closedir($path);
}

$zip = new ZipArchive();
$dirname = ‘/Uploads/text_dir‘;     // 需要打包的文件夹
$zip_name = ‘download/‘.$id.‘.zip‘;    // 打包后的文件
$res = $zip->open($zip_name, ZipArchive::CREATE);
if($res === TRUE){
        addFileToZip($dirname, $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
        $zip->close(); //关闭处理的zip文件

        // 浏览器下载
        header(‘Content-Type: application/zip‘);
        header(‘Content-Disposition: attachment; filename=‘.$zip_name);
        header(‘Content-Length: ‘.filesize($zip_name));
        readfile($zip_name);
}else{
    echo "<script>alert(‘创建压缩包失败‘);location.reload();</script>";exit;
}
时间: 2024-11-08 23:14:55

php自带压缩类压缩文件夹的相关文章

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

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

Java 压缩文件夹工具类(包含解压)

依赖jar <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.18</version> </dependency> CompressUtils.java package utils; import java.io.BufferedInputStream;

C#压缩文件夹至zip,不包含所选文件夹【转+修改】

转自园友:jimcsharp的博文C#实现Zip压缩解压实例[转] 在此基础上,对其中的压缩文件夹方法略作修正,并增加是否对父文件夹进行压缩的方法.(因为笔者有只压缩文件夹下的所有文件,却不想将选中的文件夹打入压缩文件的需求),话不多说,上代码:其中需要依赖ICSharpCode.SharpZipLib.dll: 之后,新建一个类,代码如下: using System; using System.Collections.Generic; using System.Linq; using Syst

C#利用SharpZipLib解压或压缩文件夹实例操作

最近要做一个项目涉及到C#中压缩与解压缩的问题的解决方法,大家分享. 这里主要解决文件夹包含文件夹的解压缩问题. )下载SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx中有最新免费版本,“Assemblies for .NET 1.1, .NET 2.0, .NET CF 1.0, .NET CF 2.0: Download [297 KB] ”点击Download可以下载,解压后里边

C#压缩文件夹坑~

dotNet疯狂之路No.29  今天很残酷,明天更残酷,后天很美好,但是绝大部分人是死在明天晚上,只有那些真正的英雄才能见到后天的太阳.  We're here to put a dent in the universe. Otherwise why else even be here?   开始从网上找了个压缩的示例  我去坑的不要不要的 没办法重新找 都是复制来复制去 没啥意思 前提:ICSharpCode.SharpZipLib.dll引用 创建一个类 public class ZipC

C#压缩文件夹

using System;using System.Collections.Generic;using System.Text; ///第三方dllusing ICSharpCode.SharpZipLib;using ICSharpCode.SharpZipLib.Checksums;using ICSharpCode.SharpZipLib.Zip;using System.IO;using log4net;using log4net.Config;using System.Text.Reg

Java使用线程池递归压缩文件夹下面的所有子文件

本文将介绍Java中利用线程池递归的方式压缩文件夹下面的所有子文件,具体方法如下: Gzip单个文件压缩 对于单个文件使用GZip压缩. package date0805.demo1; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream

Beyond Compare同步压缩文件夹的步骤

Beyond Compare是一款功能强大的对比软件,其中压缩文件和其他文档类型,和对比普通文件夹相同,都可以内置扩展用于对比和更新它们的内容.那么在使用Beyond Compare软件进行文件夹同步操作时,压缩文件夹也可以同步吗?本节内容主要讲解,设置Beyond Compare同步压缩文件的操作方法. 具体操作步骤如下所示 步骤一:打开Beyond Compare软件,选择文件夹同步会话,打开会话操作界面.单击“浏览”按钮选择需要同步的文件夹,如下图图例所示,左右两侧窗格内的压缩文件以普通文

怎么在Beyond Compare中同步压缩文件夹

Beyond Compare 4 中文版作为一款功能强大范围广泛的文件对比工具,在使用过程中你会发现它有很多非常贴心便捷的功能.比如其在对比文件夹的过程中,如果你需要把文件夹压缩,那么你在对比的过程中,可以同步的压缩文件夹.下面本教程就来给大家介绍介绍怎么在Beyond Compare中同步压缩文件夹? 原文:http://www.beyondcompare.cc/jiqiao/yasuo-wenjianjia.html 具体操作步骤如下所示 步骤一:打开Beyond Compare软件,选择文