[摘要] 介紹基于PHP與PKZIP的ZIP文件的上傳與解壓技術(shù),并通過具體的應(yīng)用示例說明其編程模式。
[關(guān)鍵詞] PHP PKZIP ZIPA
一、引言
目前,各類Web應(yīng)用日趨流行。在某些Web應(yīng)用系統(tǒng)中,需直接上傳ZIP格式的壓縮文件,并自動解壓之。為此,本文提出一種可跨平臺運(yùn)行的解決方案,即利用PHP與PKZIP實現(xiàn)基于Web的ZIP文件的上傳與解壓。
二、技術(shù)簡介
PHP是目前流行的Web編程語言,具有開放源碼、完全免費(fèi)、易學(xué)易用以及出色的跨平臺特性、廣泛的數(shù)據(jù)庫支持等諸多優(yōu)勢。
PKZIP是PKWare公司所推出的一款頗為流行的壓縮解壓軟件,在不同的系統(tǒng)平臺下均有相應(yīng)的版本,且功能非常強(qiáng)大,支持長文件名以及為數(shù)眾多的壓縮格式(包括ZIP、RAR、TAR等)。
在PHP中,可調(diào)用PKZIP的命令行版本(Command Line)程序pkzipc自動解壓所上傳的ZIP文件。
三、應(yīng)用示例
為說明如何在PHP中實現(xiàn)ZIP文件的上傳與解壓,現(xiàn)略舉一例,如圖1、圖2所示。在ZIP文件上傳表單中指定要上傳的ZIP文件后,再單擊“上傳”按鈕,即可提交表單,由其處理程序自動完成ZIP文件的上傳與解壓過程,并顯示相應(yīng)的處理結(jié)果。
該應(yīng)用示例以Windows為系統(tǒng)平臺,采用Apache為Web服務(wù)器。假定ZIP文件上傳表單中文件元素的Name屬性值為MyF,則提交表單后所執(zhí)行的處理程序的關(guān)鍵代碼可設(shè)計為:
copy($MyF,$MyF_name);
unlink($MyF);
$MyFn_sz=explode(\".\",$MyF_name);
$MyFn_kzm=$MyFn_sz[count($MyFn_sz)-1];
if (strtoupper($MyFn_kzm) == \"ZIP\")
{
$comstr=\"pkzipc.exe -extract=all -overwrite=all -dir=current $MyF_name\";
exec($comstr);
unlink($MyF_name);
echo \"OK!\";
}
?>
其中,pkzipc為PKZIP的命令行版本程序,只需與處理程序置于同一個目錄下即可。
四、結(jié)束語
利用PHP與PKZIP實現(xiàn)ZIP文件的上傳與解壓,是一種易于實現(xiàn)的、跨平臺的解決方案,可有效地滿足某些應(yīng)用的實際需要。
參考文獻(xiàn):
[1]黃明等編著:PHP4實例解析. 北京:電子工業(yè)出版社,2001
[2]PKZIP Command Line使用手冊