PHP多文件打包下载

来源:互联网 发布:java swing布局管理器 编辑:程序博客网 时间:2024/04/29 22:18

down.php页面代码:

<?php
    echo "<a href='doDown.php?f=./code.php'>1</a><br>";
    echo "<a href='doDown.php?f=./check.php'>2</a><br>";
    echo "<a href='doDown.php?f1=./check.php&f2=./code.php'>all</a><br>";


dodown.php页面代码:

<?php

    /**    
     *    PHP多文件打包下载
     *    此功能的代码实现用到了一个PHP中的内置类ZipArchive 使用该类,linux需开启zlib,windows需取消php_zip.dll前的注释
     *    实现的基本思路:
     *     1、实例化ZipArchive类
     *    2、生成随机的压缩包文件名
     *    3、创建一个空的压缩包
     *    4、将将要下载的文件添加到压缩包中
     *    5、关闭压缩包 注意此步不能省略 否则没法添加文件到压缩包中
     *    6、此步骤是正常的文件下载步骤
     */

    $f1 = $_GET['f1'];
    $f2 = $_GET['f2'];
    
    $datalist = array($f1,$f2);
    $zipname=date('YmdHis',time()).".zip";
    $zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释  
    $zip->open($zipname,ZipArchive::OVERWRITE);//创建一个空的zip文件
    foreach( $datalist as $val){   
        if(file_exists($val)){  
            $zip->addFile($val, basename($val));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下  
        }  
    }  
    $zip->close();
    header('Content-Type:application/zip');
    
    header('Content-Disposition:attachment;filename='.basename($zipname));
    
    //header("Content-Transfer-Encoding: binary");    //告诉浏览器,这是二进制文件
    
    header('Content-Length:'.filesize($zipname));
    
    readfile($zipname);
原创粉丝点击