关闭

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

68人阅读 评论(0) 收藏 举报
分类:

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

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);
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8742次
    • 积分:514
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类