1. 程式人生 > >php 打包下載服務器上指定目錄的文件

php 打包下載服務器上指定目錄的文件

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 打包下載服務器上指定目錄的文件