php生成壓縮包


$filename = "./" . date ( 'YmdH' ) . ".zip"; // 最終生成的文件名(含路徑)
// 生成文件
$zip = new ZipArchive (); // 使用本類,linux需開啟zlib,windows需取消php_zip.dll前的注釋

if ($zip->open ($filename ,\ZipArchive::OVERWRITE) !== true) {  //OVERWRITE 參數會覆寫壓縮包的文件 文件必須已經存在
  if($zip->open ($filename ,\ZipArchive::CREATE) !== true){   // 文件不存在則生成一個新的文件 用CREATE打開文件會追加內容至zip
      exit ( '無法打開文件,或者文件創建失敗' );
  }
}

 
$fileName = "/www/attach/1..jpg"; //存放文件的真實路徑
  

if(file_exists($fileName )){
  $zip->addEmptyDir("attach"); //生成空文件夾
  $zip->addFile( $fileName , 'attach/'.basename($fileName));//第二個參數是放在壓縮包中的文件名稱,如果文件可能會有重復,就需要注意一下 寫上目錄就會存放至目錄
}

$zip->close (); // 關閉
 
//下面是輸出下載;
header ( "Cache-Control: max-age=0" );
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 );//輸出文件;
 
 
a) 我們只需要new一個ZipArchive對象,然后使用open方法創建一個zip文件,接着使用addFile方法,將要打包的文件寫入剛剛創建的zip文件中,最好還得記得關閉該對象。
    b) 注意點:使用open方法的時候,第二個參數$flags是可選的,$flags用來指定對打開的zip文件的處理方式,共有四種情況
                    i.     ZIPARCHIVE::OVERWRITE 總是創建一個新的文件,如果指定的zip文件存在,則會覆蓋掉
                      ii.    ZIPARCHIVE::CREATE     如果指定的zip文件不存在,則新建一個
              iii.  ZIPARCHIVE::EXCL      如果指定的zip文件存在,則會報錯   
               iv.  ZIPARCHIVE::CHECKCONS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM