假如需要數個檔案打包成一個壓縮檔,可利用PHP原生套件ZipArchive,使用方法很簡單,如下...
//實際所需要的code大概就下面四行
$zip = new ZipArchive();
if ($zip->open('my_zip_folder/myzip.zip', ZipArchive::OVERWRITE) === TRUE) { //指定打包之後的壓縮檔要放在my_zip_folder下面 檔名為myzip.zip
addFileToZip('my_file_folder/', $zip); //my_file_folder 就是我們要打包的資料夾 裡面必需有兩個以上的檔案才能打包
$zip->close();
}
//產生ZIP檔後讓瀏覽器執行下載動作
header('Location: my_zip_folder/myzip.zip');
//固定的function 不用改
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);
}
PS.如果無法使用ZipArchive,請至php.ini裡面把extension=php_zip.dll前面的"分號"刪除,重新啟動Apache。
No comments:
Post a Comment