文件批量(打包)下載,ZipArchive()

原创 2016年08月28日 17:46:32

//獲取待下載文件的路徑列表,一維數組,成員值:待下載文件的路徑

function list_dir($dir){

$result = array();
if (is_dir($dir)){
$file_dir = scandir($dir);
foreach($file_dir as $file){
if ($file == '.' || $file == '..'){
continue;
}
elseif (is_dir($dir.$file)){
$result = array_merge($result, list_dir($dir.$file.'/'));
}
else{
array_push($result, $dir.$file);
}
}
}
return $result;

}


function multiDwonload($datalist){
// 獲取待下載文件的路徑列表
// $datalist=list_dir($dir);
// 最終生成的文件名(含路徑)   
$filename = "./public/download/borekare.zip";


// 確保每次下載都是最新的打包
if(file_exists($filename)){
unlink($filename);
}
// 生成下載文件包 
if(!file_exists($filename)){   
 
// 使用本類,linux需開啟zlib,windows需開啟php_zip.dll(但測試使用PHP5.4,php.ini無此擴展,使用正常)
   $zip = new ZipArchive();
   if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {   
       exit('無法打開文件,或者文件創建失敗');
   }   
   foreach( $datalist as $val){   
       if(file_exists($val)){   
        //第二個參數是放在壓縮包中的文件名稱,如果文件可能會有重复,則需要注意一下 
           $zip->addFile( $val, basename($val));
       }   
   }   
   // 關閉
   $zip->close();
}   
// 即使創建,仍有可能失敗
if(!file_exists($filename)){   
   exit("無法找到文件"); 
}   


header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
// 文件名   
header('Content-disposition: attachment; filename='.basename($filename)); 
// zip格式
header("Content-Type: application/zip");    
// 告訴瀏覽器,這是二進制文件   
header("Content-Transfer-Encoding: binary"); 
// 告訴瀏覽器,文件大小 
header('Content-Length: '. filesize($filename));   
@readfile($filename);
}


版权声明:本文爲博主原創文章,未經允許不得轉載。

相关文章推荐

ASP.NET多文件批量打包下载

在项目实施中,遇到了将多个文件一起打包后,提供给用户下载。如:在一个ASP.NET的开发项目中,通过一个GridView选中对应行数据的CheckBox,就可以实现对选中文件的打包下载了。 在对多文...

java将文件批量打包后并下载

struts2 ,spring,spring jdbc框架: /** * 批量下载 */ public void batchDowload(){ String ent_id = (St...

文件批量上传和打包下载

1、因为是上传多个文件所以用的是个插件zyupload插件 2、需要引入的插件如下所示; 3、页面相关信息如下图所示:4、数据库中的相关信息如下所示: 5、后台的相关代码如下所示:packa...

java文件下载功能代码(单文件下载、多文件批量打包下载)——普遍适用

程序员在做web等项目的时候,往往都需要添加文件上传、下载、删除的功能,有时是单文件,有时多文件批量 操作,而这些功能的代码程序员可以自己收藏起来当成工具使用,这样,程序员在进行程序设计的时候就会事...

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载

PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有...

文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件

文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件 总结:                                             ...

C#.net文件批量上传解决方案附下载(swfupload)

因为最近项目需要多文件同时上传所以自己在网上找了下方法。swfupload做到了,所以我把我的C#.net环境的多文件同时上传共享给大家!(本实例最大只能上传500M的数据,如需要上传更大的下面会告诉...
  • charrys
  • charrys
  • 2011年08月15日 09:04
  • 1379

struts2实现文件批量下载

大家都知道struts2提供了文件下载的功能,很方便很好用。废话不多说直接开始。         首先我们先对struts.xml进行配置,struts2的result 类型设为stream...

http文件批量多线程下载之winform

这里简单的介绍一种从http获取文件然后下载到本地的方法,开始我用单线程下载,文件多的情况下速度太慢了,后来就采用多线程,这里琢磨了好久才整出来一个。这里的部分代码是在博客园找到的,具体是在哪里不是很...

Java 文件批量下载

转载:http://blog.csdn.net/liu19890121liu/article/details/39229389?locationNum=3 ps:批量下载(无弹框,直接保存) impo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件批量(打包)下載,ZipArchive()
举报原因:
原因补充:

(最多只允许输入30个字)