php 打包下載

       $filename = time().".zip";
        $zip    =   new \ZipArchive();
        if($zip->open($filename, \ZipArchive::CREATE)=== TRUE){
            $this->addFileToZip("E:/project" .__ROOT__.'/ask/',$zip);//加入應用程序
            $zip->close(); //關閉處理的zip文件
        }

        if(!file_exists($filename)){
            die("無法找到文件"); //即使創建,仍有可能失敗。。。。
        }
        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)); //告訴瀏覽器,文件大小
        ob_clean();
        flush();
        @readfile($filename);
        @unlink($filename);
function addFileToZip($path,$zip){
        $handler=opendir($path); //打開當前文件夾由$path指定。
        while(($filename=readdir($handler))!==false){
            if($filename != "." && $filename != ".."){//文件夾文件名字爲'.'和‘..’,不要對他們進行操作
                if(is_dir($path."/".$filename)){// 如果讀取的某個對象是文件夾,則遞歸
                    $this->addFileToZip($path."/".$filename, $zip);
                }else{ //將文件加入zip對象
                    $zip->addFile($path."/".$filename);
                  //如果要去掉目錄層級則
                  $file_info_arr= pathinfo($path."/".$filename);
         $zip->addFile($path."/".$filename,$file_info_arr['basename']);
               }
            }
        }
        @closedir($path);
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章