-

full stack debug log

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

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

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


阅读更多
版权声明:本文爲博主原創文章,未經允許不得轉載。 https://blog.csdn.net/zengweitao2/article/details/52346777
个人分类: PHP
上一篇global和$GLOBALS
下一篇GIT,基礎命令
想对作者说点什么? 我来说一句

zipArchive

2015年02月09日 40KB 下载

ZipArchive

2015年09月09日 40KB 下载

没有更多推荐了,返回首页

关闭
关闭