在PHP中有一個(gè)ZipArchive類,可以很容易地用來(lái)創(chuàng)建zip文件。下面通過示例來(lái)介紹如何在PHP中創(chuàng)建zip文件。【視頻教程推薦:PHP教程】
創(chuàng)建一個(gè)新的zip文件
以下代碼將創(chuàng)建一個(gè)新的zip文件(test_new.zip)并向其中添加一些文件。
?php$zip = new ZipArchive;if ($zip- open( test_new.zip , ZipArchive::CREATE) === TRUE) // 將文件添加到zip文件 $zip- addFile( test.txt $zip- addFile( test.pdf // 將random.txt文件添加到zip并將其重命名為newfile.txt $zip- addFile( random.txt , newfile.txt // 將有指定文本的new.txt文件添加到zip文件中 $zip- addFromString( new.txt , 要添加到new.txt文件中的文本 // 關(guān)閉zip文件 $zip- close();?
代碼說明:
第2行:創(chuàng)建ZipArchive類的對(duì)象
第3行:用于創(chuàng)建并打開一個(gè)名為test_new.zip的文件,以便我們可以向其中添加文件。標(biāo)志ZipArchive::CREATE指定我們要?jiǎng)?chuàng)建一個(gè)新的zip文件
第6行和第7行:用于將文件添加到zip文件中。
第10行:用于將名為random.txt的文件添加到zip文件中,并在zip文件中將其重命名為newfile.txt。
第13行:用于添加新文件new.txt,文件內(nèi)容為“要添加到new.txt文件的文本”。
第16行:關(guān)閉并保存對(duì)zip文件的更改。
注意:有時(shí)在使用文件的相對(duì)路徑時(shí)可能會(huì)出現(xiàn)問題。如果使用路徑有任何問題,那么我們也可以使用文件的絕對(duì)路徑
覆蓋現(xiàn)有的zip文件
如果要覆蓋現(xiàn)有的zip文件,我們可以使用類似于以下的代碼。該標(biāo)志ZipArchive::OVERWRITE指定覆蓋現(xiàn)有的zip文件。
?php$zip = new ZipArchive;if ($zip- open( test_overwrite.zip , ZipArchive::OVERWRITE) === TRUE) // 將文件添加到zip文件 $zip- addFile( test.txt $zip- addFile( test.pdf // 關(guān)閉zip文件 $zip- close();?
代碼說明
此代碼將創(chuàng)建一個(gè)文件test_overwrite.zip,如果該文件已經(jīng)存在,文件將被此新文件覆蓋。
創(chuàng)建一個(gè)新的zip文件并在指定文件夾中添加文件
?php$zip = new ZipArchive;if ($zip- open( test_folder.zip , ZipArchive::CREATE) === TRUE) // 將文件添加到zip文件中的demo_folder文件夾內(nèi) $zip- addFile( text.txt , demo_folder/test.txt $zip- addFile( test.pdf , demo_folder/test.pdf // 將random.txt文件添加到zip文件中的demo_folder文件夾內(nèi),并重命名為newfile.txt $zip- addFile( random.txt , demo_folder/newfile.txt // 將有指定內(nèi)容的new.txt添加到zip文件中的demo_folder文件夾 $zip- addFromString( demo_folder/new.txt , 要添加到new.txt文件中的文本 // 關(guān)閉zip文件 $zip- close();?
代碼說明
上面的代碼會(huì)將zip文件中的不同文件添加到demo_folder文件夾中
addfile函數(shù)的第二個(gè)參數(shù)可用于將文件存儲(chǔ)在新文件夾中
addFromString函數(shù)中的第一個(gè)參數(shù)可用于將文件存儲(chǔ)在新文件夾中
創(chuàng)建一個(gè)新的zip文件并將文件添加到不同的文件夾中
?php$zip = new ZipArchive;if ($zip- open( test_folder_change.zip , ZipArchive::CREATE) === TRUE) // 將文件添加到zip文件 $zip- addFile( text.txt , demo_folder/test.txt $zip- addFile( test.pdf , demo_folder1/test.pdf // 關(guān)閉zip文件 $zip- close();?
代碼說明
我們將zip文件中的test.txt文件存儲(chǔ)到demo_folder文件夾中,將test.pdf文件存儲(chǔ)到demo_folder1文件夾中
創(chuàng)建一個(gè)zip文件,其中包含一個(gè)目錄中的所有文件
?php$zip = new ZipArchive;if ($zip- open( test_dir.zip , ZipArchive::OVERWRITE) === TRUE) if ($handle = opendir( demo_folder )) // 添加目錄中的所有文件 while (false !== ($entry = readdir($handle))) if ($entry != . $entry != .. !is_dir( demo_folder/ . $entry)) $zip- addFile( demo_folder/ . $entry); closedir($handle); $zip- close();?
代碼說明
第5-16行:打開一個(gè)目錄,并創(chuàng)建一個(gè)包含該目錄中所有文件的zip文件
第5行:打開目錄
第8行:獲取目錄中每個(gè)文件的名稱
第10行:跳過“.”和“..”以及任何其他目錄
第12行:將文件添加到zip文件中
第15行:關(guān)閉目錄
第18行:關(guān)閉zip文件
創(chuàng)建一個(gè)zip文件,其中包含多個(gè)目錄的所有文件
以下代碼將這些目錄中的不同文件夾和文件添加到zip文件中
?php$zip = new ZipArchive;if ($zip- open( test_files_dirs.zip , ZipArchive::OVERWRITE) === TRUE) // 添加 directory1 if ($handle = opendir( demo_folder/directory1/ )) while (false !== ($entry = readdir($handle))) if ($entry != . $entry != .. ) $zip- addFile( demo_folder/directory1/ . $entry); closedir($handle); // 添加 directory2 if ($handle = opendir( demo_folder/directory2/ )) while (false !== ($entry = readdir($handle))) if ($entry != . $entry != .. ) $zip- addFile( demo_folder/directory2/ . $entry); closedir($handle); // 添加 directory3 if ($handle = opendir( demo_folder/directory3/ )) while (false !== ($entry = readdir($handle))) if ($entry != . $entry != .. ) $zip- addFile( demo_folder/directory3/ . $entry); closedir($handle); $zip- close();?
代碼說明
第6-42行:將目錄directory1,directory2和directory3中的所有文件添加到zip文件中的相應(yīng)目錄中。
以上就是本篇文章的全部?jī)?nèi)容,希望能對(duì)大家的學(xué)習(xí)有所幫助。更多精彩內(nèi)容大家可以關(guān)注php 相關(guān)教程欄目!!!
以上就是如何使用PHP創(chuàng)建zip壓縮文件的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選