PHP擴充套件類ZipArchive簡單使用
阿新 • • 發佈:2018-12-23
一、解壓縮zip檔案
二、將檔案壓縮成zip檔案<?php $zip = new ZipArchive;//新建一個ZipArchive的物件 /* 通過ZipArchive的物件處理zip檔案 $zip->open這個方法的引數表示處理的zip檔名。 如果對zip檔案物件操作成功,$zip->open這個方法會返回TRUE */ if ($zip->open('test.zip') === TRUE){ $zip->extractTo('images');//假設解壓縮到在當前路徑下images資料夾的子資料夾php $zip->close();//關閉處理的zip檔案 } ?>
三、檔案追加內容新增到zip檔案<?php $zip = new ZipArchive; /* $zip->open這個方法第一個引數表示處理的zip檔名。 第二個引數表示處理模式,ZipArchive::OVERWRITE表示如果zip檔案存在,就覆蓋掉原來的zip檔案。 如果引數使用ZIPARCHIVE::CREATE,系統就會往原來的zip檔案裡新增內容。 如果不是為了多次新增內容到zip檔案,建議使用ZipArchive::OVERWRITE。 使用這兩個引數,如果zip檔案不存在,系統都會自動新建。 如果對zip檔案物件操作成功,$zip->open這個方法會返回TRUE */ if ($zip->open('test.zip', ZipArchive::OVERWRITE) === TRUE){ $zip->addFile('image.txt');//假設加入的檔名是image.txt,在當前路徑下 $zip->close(); } ?>
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
$zip->addFromString('test.txt', 'file content goes here');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
?>
四、將資料夾打包成zip檔案
<?php function addFileToZip($path, $zip) { $handler = opendir($path); //開啟當前資料夾由$path指定。 /* 迴圈的讀取資料夾下的所有檔案和資料夾 其中$filename = readdir($handler)是每次迴圈的時候將讀取的檔名賦值給$filename, 為了不陷於死迴圈,所以還要讓$filename !== false。 一定要用!==,因為如果某個檔名如果叫'0',或者某些被系統認為是代表false,用!=就會停止迴圈 */ 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('images.zip', ZipArchive::OVERWRITE) === TRUE) { addFileToZip('images/', $zip); //呼叫方法,對要打包的根目錄進行操作,並將ZipArchive的物件傳遞給方法 $zip->close(); //關閉處理的zip檔案 } ?>