PHP生成zip壓縮包的常用方法示例
本文實(shí)例講述了PHP生成zip壓縮包的常用方法。分享給大家供大家參考,具體如下:
壓縮一個(gè)文件
我們將一個(gè)文件生成一個(gè)壓縮包。
<?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,并保存在當(dāng)前目錄。
壓縮多個(gè)文件
壓縮多個(gè)文件,其實(shí)就是addFile執(zhí)行多次,可以通過數(shù)組的遍歷來實(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)閉壓縮包
壓縮一個(gè)目錄
<?php function addFileToZip($path,$zip){ $handler=opendir($path); //打開當(dāng)前文件夾由$path指定。 while(($filename=readdir($handler))!==false){ if($filename != "." && $filename != ".."){//文件夾文件名字為'.'和‘..',不要對他們進(jìn)行操作 if(is_dir($path."/".$filename)){// 如果讀取的某個(gè)對象是文件夾,則遞歸 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)用方法,對要打包的根目錄進(jìn)行操作,并將ZipArchive的對象傳遞給方法 $zip->close(); //關(guān)閉處理的zip文件 }
壓縮并下載zip包
我的時(shí)候,我們需要打包之后,提供下載,然后刪除壓縮包。
可以分為以下幾步:
- 判斷給出的路徑,是文件夾,還是文件。文件夾還需要遍歷添加文件。
- 設(shè)置相關(guān)文件頭,并使用readfile函數(shù)提供下載。
- 使用unlink函數(shù)刪除壓縮包
<?php function addFileToZip($path,$zip){ $handler=opendir($path); //打開當(dāng)前文件夾由$path指定。 while(($filename=readdir($handler))!==false){ if($filename != "." && $filename != ".."){//文件夾文件名字為'.'和‘..',不要對他們進(jìn)行操作 if(is_dir($path."/".$filename)){// 如果讀取的某個(gè)對象是文件夾,則遞歸 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{ //只給出一個(gè)文件 $zip->addFile($path); } $zip->close(); //關(guān)閉處理的zip文件 }
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP操作zip文件及壓縮技巧總結(jié)》、《php文件操作總結(jié)》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
- php利用ZipArchive類操作文件的實(shí)例
- php ZipArchive實(shí)現(xiàn)多文件打包下載實(shí)例
- php解壓縮zip和rar壓縮包文件的方法
- 實(shí)例介紹PHP中zip_open()函數(shù)用法
- PHP zip壓縮包操作類完整實(shí)例
- PHP實(shí)現(xiàn)打包zip并下載功能
- PHP實(shí)現(xiàn)將多個(gè)文件壓縮成zip格式并下載到本地的方法示例
- PHP使用zlib擴(kuò)展實(shí)現(xiàn)GZIP壓縮輸出的方法詳解
- linux服務(wù)器安裝PHP擴(kuò)展zip,zlib方法
- 基于PHP安裝zip拓展,以及l(fā)ibzip安裝的問題
- php 解壓zip壓縮包內(nèi)容到指定目錄的實(shí)例
- php操作zip在不解壓縮包的情況下顯示壓縮包中的圖片
- 如何使用php生成zip壓縮包
相關(guān)文章
php運(yùn)行報(bào)錯(cuò)Call to undefined function curl_init()的最新解決方法
其實(shí)在網(wǎng)上很早之前就出現(xiàn)過這個(gè)問題,網(wǎng)上百度了下,答案千篇一律,最近又遇到這個(gè)問題,但是百度出來的問題不能解決這個(gè)問題了,所以只能翻墻找答案,現(xiàn)在將解決的方法分享給大家,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11php中Session的生成機(jī)制、回收機(jī)制和存儲機(jī)制探究
這篇文章主要介紹了php中Session的生成機(jī)制、回收機(jī)制和存儲機(jī)制探究,可以幫助大家對Session有一個(gè)全面的了解,需要的朋友可以參考下2014-08-08PHP實(shí)現(xiàn)的簡單在線計(jì)算器功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的簡單在線計(jì)算器功能,涉及php數(shù)值運(yùn)算與表單操作相關(guān)技巧,需要的朋友可以參考下2017-08-08PHP ADODB實(shí)現(xiàn)分頁功能簡單示例
這篇文章主要介紹了PHP ADODB實(shí)現(xiàn)分頁功能,結(jié)合實(shí)例形式分析了php使用ADODB實(shí)現(xiàn)分頁功能相關(guān)操作技巧,需要的朋友可以參考下2018-05-05