溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在PHP中生成一個zip壓縮包

發(fā)布時間:2021-04-14 17:00:48 來源:億速云 閱讀:205 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)怎么在PHP中生成一個zip壓縮包,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

壓縮一個文件

我們將一個文件生成一個壓縮包。

<?php
$path = "c:/wamp/www/log.txt";
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);  //打開壓縮包
$zip->addFile($path,basename($path));  //向壓縮包中添加文件
$zip->close(); //關(guān)閉壓縮包

上述代碼將c:/wamp/www/log.txt文件壓縮生成了test.zip,并保存在當前目錄。

壓縮多個文件

壓縮多個文件,其實就是addFile執(zhí)行多次,可以通過數(shù)組的遍歷來實現(xiàn)。

<?php
$fileList = array(
  "c:/wamp/www/log.txt",
  "c:/wamp/www/weixin.class.php"
);
$filename = "test.zip";
$zip = new ZipArchive();
$zip->open($filename,ZipArchive::CREATE);  //打開壓縮包
foreach($fileList as $file){
  $zip->addFile($file,basename($file));  //向壓縮包中添加文件
}
$zip->close(); //關(guān)閉壓縮包

壓縮一個目錄

<?php
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對象
        $zip->addFile($path."/".$filename);
      }
    }
  }
  @closedir($path);
}
$zip=new ZipArchive();
if($zip->open('rsa.zip', ZipArchive::OVERWRITE)=== TRUE){
  addFileToZip('rsa/', $zip); //調(diào)用方法,對要打包的根目錄進行操作,并將ZipArchive的對象傳遞給方法
  $zip->close(); //關(guān)閉處理的zip文件
}

壓縮并下載zip包

我的時候,我們需要打包之后,提供下載,然后刪除壓縮包。

可以分為以下幾步:

  1. 判斷給出的路徑,是文件夾,還是文件。文件夾還需要遍歷添加文件。

  2. 設(shè)置相關(guān)文件頭,并使用readfile函數(shù)提供下載。

  3. 使用unlink函數(shù)刪除壓縮包

<?php
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對象
        $zip->addFile($path."/".$filename);
      }
    }
  }
  @closedir($path);
}
$zip=new ZipArchive();
if($zip->open('rsa.zip', ZipArchive::OVERWRITE)=== TRUE){
  $path = 'rsa/';
  if(is_dir($path)){ //給出文件夾,打包文件夾
    addFileToZip($path, $zip);
  }else if(is_array($path)){ //以數(shù)組形式給出文件路徑
    foreach($path as $file){
      $zip->addFile($file);
    }
  }else{   //只給出一個文件
    $zip->addFile($path);
  }
  $zip->close(); //關(guān)閉處理的zip文件
}

看完上述內(nèi)容,你們對怎么在PHP中生成一個zip壓縮包有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI