[摘要] 介紹基于PHP與PKZIP的ZIP文件的上傳與解壓技術,并通過具體的應用示例說明其編程模式。
[關鍵詞] PHP PKZIP ZIPA
一、引言
目前,各類Web應用日趨流行。在某些Web應用系統中,需直接上傳ZIP格式的壓縮文件,并自動解壓之。為此,本文提出一種可跨平臺運行的解決方案,即利用PHP與PKZIP實現基于Web的ZIP文件的上傳與解壓。
二、技術簡介
PHP是目前流行的Web編程語言,具有開放源碼、完全免費、易學易用以及出色的跨平臺特性、廣泛的數據庫支持等諸多優勢。
PKZIP是PKWare公司所推出的一款頗為流行的壓縮解壓軟件,在不同的系統平臺下均有相應的版本,且功能非常強大,支持長文件名以及為數眾多的壓縮格式(包括ZIP、RAR、TAR等)。
在PHP中,可調用PKZIP的命令行版本(Command Line)程序pkzipc自動解壓所上傳的ZIP文件。
三、應用示例
為說明如何在PHP中實現ZIP文件的上傳與解壓,現略舉一例,如圖1、圖2所示。在ZIP文件上傳表單中指定要上傳的ZIP文件后,再單擊“上傳”按鈕,即可提交表單,由其處理程序自動完成ZIP文件的上傳與解壓過程,并顯示相應的處理結果。
該應用示例以Windows為系統平臺,采用Apache為Web服務器。假定ZIP文件上傳表單中文件元素的Name屬性值為MyF,則提交表單后所執行的處理程序的關鍵代碼可設計為:
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的命令行版本程序,只需與處理程序置于同一個目錄下即可。
四、結束語
利用PHP與PKZIP實現ZIP文件的上傳與解壓,是一種易于實現的、跨平臺的解決方案,可有效地滿足某些應用的實際需要。
參考文獻:
[1]黃明等編著:PHP4實例解析. 北京:電子工業出版社,2001
[2]PKZIP Command Line使用手冊