php简单的压缩打包下载功能
在之前发布的文章里面已经生成了 txt 的文件,这些文件是需要生成压缩包进行下载的,先写了一个简单的压缩打包下载功能,就是在指定的目录下有一个压缩包,比如程序当中的 include 目录下 test.zip 文件,然后只要运行这个 php 程序文件,就出现下载压缩包的弹出窗,当我们把这个文件下载下来之后进行打开正常显示里面的文件。
小虎博客提供的分享代码如下:
[code lang="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("无法找到文件"); //即使创建,仍有可能失败。。。。
} //xiaohuboke.com
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);
?>
[/code]