A-A+

php简单的压缩打包下载功能

2015年03月17日 PHP技术文章 评论 5 条 阅读 138 views 次

在之前发布的文章里面已经生成了 txt 的文件,这些文件是需要生成压缩包进行下载的,先写了一个简单的压缩打包下载功能,就是在指定的目录下有一个压缩包,比如程序当中的 include 目录下 test.zip 文件,然后只要运行这个 php 程序文件,就出现下载压缩包的弹出窗,当我们把这个文件下载下来之后进行打开正常显示里面的文件。

夏日博客提供的分享代码如下:

<?php
/** 
 * 没有写成class 或者 function ,需要的朋友自己写,就这么几行。。 
 */  
$filename = "./include/test.zip"; //最终生成的文件名(含路径)  
if(!file_exists($filename)){  
    //重新生成文件  
    $zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释  
    if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {  
        exit('无法打开文件,或者文件创建失败');  
    }  
    foreach( $datalist as $val){  
        $attachfile = $attachmentDir . $val['filepath'];    //获取原始文件路径  
        if(file_exists($attachfile)){  
            $zip->addFile( $attachfile , basename($attachfile));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下  
        }  
    }  
    $zip->close();//关闭  
}  
if( !file_exists($filename)){  
    exit("无法找到文件"); //即使创建,仍有可能失败。。。。  
} //xiariboke.net
header("Cache-Control: public");   
header("Content-Description: File Transfer");   
header('Content-disposition: attachment; filename='.basename($filename)); //文件名  
header("Content-Type: application/zip"); //zip格式的  
header("Content-Transfer-Encoding: binary");    //告诉浏览器,这是二进制文件   
header('Content-Length: '. filesize($filename));    //告诉浏览器,文件大小  
@readfile($filename);
?>
标签:

5 条留言  访客:5 条  博主:0 条

  1. 慢点博客

    学习了,还有注解!真心好。

  2. 梦在远方

    请问您这篇文章中分享代码部分,是用什么插件实现的,挺不错的。

    • smiling

      这篇是 php 技术类的文章,跟 wordpress 没有关系,不是插件。

  3. 梦在远方

    为什么一发技术类文章就没有人坐沙发,因为来访者大部分都不懂。而感悟类、聊天类比较容易激起大家的参与热情。

    • smiling

      哎,技术类的还好写点,生活类的文章还真不太好写。

给我留言