php 打包下載服務器上指定目錄的文件
阿新 • • 發佈:2018-01-10
encoding osi esc sts enc 參數 content arc inux
參考代碼如下:
//獲取文件列表 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; } $datalist=list_dir(ROOT_PATH.‘qrcode/temp/on_sale/‘); $filename = "./qrcode/on_sale.zip"; //最終生成的文件名(含路徑)if(!file_exists($filename)){ //重新生成文件 $zip = new ZipArchive();//使用本類,linux需開啟zlib,windows需取消php_zip.dll前的註釋 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)); //文件名 header("Content-Type: application/zip"); //zip格式的 header("Content-Transfer-Encoding: binary"); //告訴瀏覽器,這是二進制文件 header(‘Content-Length: ‘. filesize($filename)); //告訴瀏覽器,文件大小 @readfile($filename);
php 打包下載服務器上指定目錄的文件