1. 程式人生 > >php自帶壓縮類壓縮文件夾

php自帶壓縮類壓縮文件夾

tac true pre 失敗 osi alert 關閉 自動 對象傳遞

// 壓縮文件夾
function addFileToZip($path,$zip){
    $handler=opendir($path); //打開當前文件夾由$path指定。
    while(($filename=readdir($handler))!==false){
        if($filename != "." && $filename != ".."){//文件夾文件名字為‘.‘和‘..’,不要對他們進行操作
            if(is_dir($path."/".$filename)){// 如果讀取的某個對象是文件夾,則遞歸
                addFileToZip($path
."/".$filename, $zip); }else{ //將文件加入zip對象 /* * addFile(參數1,參數2) * 參數1:文件完整路徑(含文件名) * 參數2:自定義新文件名(不含路徑就直接加在壓縮包根目錄,否則將在壓縮包中自動創建對應目錄) * */ $zip->addFile($path."/".$filename, $filename); } } } @
closedir($path); } $zip = new ZipArchive(); $dirname = ‘/Uploads/text_dir‘; // 需要打包的文件夾 $zip_name = ‘download/‘.$id.‘.zip‘; // 打包後的文件 $res = $zip->open($zip_name, ZipArchive::CREATE); if($res === TRUE){ addFileToZip($dirname, $zip); //調用方法,對要打包的根目錄進行操作,並將ZipArchive的對象傳遞給方法 $zip->close(); //
關閉處理的zip文件 // 瀏覽器下載 header(‘Content-Type: application/zip‘); header(‘Content-Disposition: attachment; filename=‘.$zip_name); header(‘Content-Length: ‘.filesize($zip_name)); readfile($zip_name); }else{ echo "<script>alert(‘創建壓縮包失敗‘);location.reload();</script>";exit; }

php自帶壓縮類壓縮文件夾