代码改变世界

可复用的PHP类库(一):zip操作类

2009-12-14 13:04  xiaosuo  阅读(763)  评论(0编辑  收藏  举报

一、文件夹压缩成zip

在php中生成zip其实很简单,只要下面2步就能完成。

1.请先下载我准备好的zip.php工具类,下载后解压,将里面的文件放入对应的目录中,我是放在虚拟目录下的include文件夹中。

2.在你的php文件中加入下面代码即可

require_once "./include/zip.php";

$zip = new PHPZip();
//$zip -> createZip("要压缩的文件夹目录地址", "压缩后的文件名.zip");    //只生成不自动下载
$zip -> downloadZip("要压缩的文件夹目录地址", "压缩后的文件名.zip");  //自动下载

  

实例:可以参考下面的伪代码来看一个具体的使用场景:

代码
    require_once "./include/zip.php";

    
if (!$download) {
        
exit();
    }
    
set_time_limit(60);

    
$tmpManager = new TmpManager();      //假设我们有一个类来完成后面的操作

    
$tempfolder = array();
    
$tempfile = array();
        
//假设我们是通过在页面上选择checkbox来下载已选的文件夹或文件,并一同打包
        for($i = 0;$i < $checkboxnum;$i++) {
        
$value = ${"select".$i};
        
if ($value != '') {
            
$this_type = substr($value, 0, 1);
            
$this_id = substr($value, 1);
                        
//将文件夹和文件的情况分开处理
            if ($this_type == 'd') {                     
                                
$tempfolder[] = $this_id;
            }
                        
elseif ($this_type == 'f') {     
                
$tempfile[] = $this_id;
            }
        }
    }

        @
mkdir($tempdir);

    
$curtempdir = "$tempdir/".$userid;    //不同用户在不同的临时文件夹下操作
    
    
if (file_exists($curtempdir)) {
        
$tmpManager->DeleteDir($curtempdir);    //删除旧的文件夹
    }

    
if (sizeof($tempfolder> 0 || sizeof($tempfile> 0) {
        
mkdir($curtempdir, 0777);       //如果有要打包的文件货文件夹,重新创建文件夹
    }

    
if (sizeof($tempfile> 0) {
        
$tmpManager->CopyFile($tempfile,$curtempdir);    //将要下载的文件copy到创建的文件夹
    }
    
    
if (sizeof($tempfolder> 0) {
        
$tmpManager->CopyFolder($tempfolder,$curtempdir);    //将要下载的文件夹copy到创建的文件夹
    }

    
$zip = new PHPZip();
    
$zip -> downloadZip($curtempdir, "file_".date('Ymd').".zip");     //打包并下载

  

二、解压zip文件

  待续