亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

php文件壓縮之PHPZip類用法實例

2024-05-04 23:36:27
字體:
來源:轉載
供稿:網友

本文實例講述了php文件壓縮之PHPZip類用法。分享給大家供大家參考。具體如下:

 

 
  1. <?php 
  2. // 
  3. // PHPZip v1.2 by Sext (sext@neud.net)  
  4. // 
  5. // Makes zip archive 
  6. // 
  7. // Based on "Zip file creation class", uses zLib 
  8. // 
  9. // 
  10. class PHPZip 
  11. function Zip($dir$zipfilename
  12. if (@function_exists('gzcompress')) 
  13. $curdir = getcwd(); 
  14. if (is_array($dir)) 
  15. $filelist = $dir
  16. else 
  17. $filelist = $this -> GetFileList($dir); 
  18. if ((!emptyempty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir); 
  19. else chdir($curdir); 
  20. if (count($filelist)>0) 
  21. foreach($filelist as $filename
  22. if (is_file($filename)) 
  23. $fd = fopen ($filename"r"); 
  24. $content = fread ($fdfilesize ($filename)); 
  25. fclose ($fd); 
  26. if (is_array($dir)) $filename = basename($filename); 
  27. $this -> addFile($content$filename); 
  28. $out = $this -> file(); 
  29. chdir($curdir); 
  30. $fp = fopen($zipfilename"w"); 
  31. fwrite($fp$outstrlen($out)); 
  32. fclose($fp); 
  33. return 1; 
  34. else return 0; 
  35. function GetFileList($dir
  36. if (file_exists($dir)) 
  37. $args = func_get_args(); 
  38. $pref = $args[1]; 
  39. $dh = opendir($dir); 
  40. while($files = readdir($dh)) 
  41. if (($files!=".")&&($files!="..")) 
  42. if (is_dir($dir.$files)) 
  43. $curdir = getcwd(); 
  44. chdir($dir.$files); 
  45. $file = array_merge($file$this -> GetFileList("""$pref$files/")); 
  46. chdir($curdir); 
  47. else $file[]=$pref.$files
  48. closedir($dh); 
  49. return $file
  50. var $datasec = array(); 
  51. var $ctrl_dir = array(); 
  52. var $eof_ctrl_dir = "x50x4bx05x06x00x00x00x00"
  53. var $old_offset = 0; 
  54. /** 
  55. * Converts an Unix timestamp to a four byte DOS date and time format (date 
  56. * in high two bytes, time in low two bytes allowing magnitude comparison). 
  57. * 
  58. * @param integer the current Unix timestamp 
  59. * 
  60. * @return integer the current date in a four byte DOS format 
  61. * 
  62. * @access private 
  63. */ 
  64. function unix2DosTime($unixtime = 0) { 
  65. $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); 
  66. if ($timearray['year'] < 1980) { 
  67. $timearray['year'] = 1980; 
  68. $timearray['mon'] = 1; 
  69. $timearray['mday'] = 1; 
  70. $timearray['hours'] = 0; 
  71. $timearray['minutes'] = 0; 
  72. $timearray['seconds'] = 0; 
  73. // end if 
  74. return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | 
  75. ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); 
  76. // end of the 'unix2DosTime()' method 
  77. /** 
  78. * Adds "file" to archive 
  79. * 
  80. * @param string file contents 
  81. * @param string name of the file in the archive (may contains the path) 
  82. * @param integer the current timestamp 
  83. * 
  84. * @access public 
  85. */ 
  86. function addFile($data$name$time = 0) 
  87. $name = str_replace('''/'$name); 
  88.  
  89. $dtime = dechex($this->unix2DosTime($time)); 
  90. $hexdtime = 'x' . $dtime[6] . $dtime[7] 
  91. 'x' . $dtime[4] . $dtime[5] 
  92. 'x' . $dtime[2] . $dtime[3] 
  93. 'x' . $dtime[0] . $dtime[1]; 
  94. eval('$hexdtime = "' . $hexdtime . '";'); 
  95. $fr = "x50x4bx03x04"
  96. $fr .= "x14x00"// ver needed to extract 
  97. $fr .= "x00x00"// gen purpose bit flag 
  98. $fr .= "x08x00"// compression method 
  99. $fr .= $hexdtime// last mod time and date 
  100.  
  101. // "local file header" segment 
  102. $unc_len = strlen($data); 
  103. $crc = crc32($data); 
  104. $zdata = gzcompress($data); 
  105. $c_len = strlen($zdata); 
  106. $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug 
  107. $fr .= pack('V'$crc); // crc32 
  108. $fr .= pack('V'$c_len); // compressed filesize 
  109. $fr .= pack('V'$unc_len); // uncompressed filesize 
  110. $fr .= pack('v'strlen($name)); // length of filename 
  111. $fr .= pack('v', 0); // extra field length 
  112. $fr .= $name
  113. // "file data" segment 
  114. $fr .= $zdata
  115. // "data descriptor" segment (optional but necessary if archive is not 
  116. // served as file) 
  117. $fr .= pack('V'$crc); // crc32 
  118. $fr .= pack('V'$c_len); // compressed filesize 
  119. $fr .= pack('V'$unc_len); // uncompressed filesize 
  120. // add this entry to array 
  121. $this -> datasec[] = $fr
  122. $new_offset = strlen(implode(''$this->datasec)); 
  123. // now add to central directory record 
  124. $cdrec = "x50x4bx01x02"
  125. $cdrec .= "x00x00"// version made by 
  126. $cdrec .= "x14x00"// version needed to extract 
  127. $cdrec .= "x00x00"// gen purpose bit flag 
  128. $cdrec .= "x08x00"// compression method 
  129. $cdrec .= $hexdtime// last mod time & date 
  130. $cdrec .= pack('V'$crc); // crc32 
  131. $cdrec .= pack('V'$c_len); // compressed filesize 
  132. $cdrec .= pack('V'$unc_len); // uncompressed filesize 
  133. $cdrec .= pack('v'strlen($name) ); // length of filename 
  134. $cdrec .= pack('v', 0 ); // extra field length 
  135. $cdrec .= pack('v', 0 ); // file comment length 
  136. $cdrec .= pack('v', 0 ); // disk number start 
  137. $cdrec .= pack('v', 0 ); // internal file attributes 
  138. $cdrec .= pack('V', 32 ); // external file attributes - 'archive' bit set 
  139. $cdrec .= pack('V'$this -> old_offset ); // relative offset of local header 
  140. $this -> old_offset = $new_offset
  141. $cdrec .= $name
  142. // optional extra field, file comment goes here 
  143. // save to central directory 
  144. $this -> ctrl_dir[] = $cdrec
  145. // end of the 'addFile()' method 
  146. /** 
  147. * Dumps out file 
  148. * 
  149. * @return string the zipped file 
  150. * 
  151. * @access public 
  152. */ 
  153. function file() 
  154. $data = implode(''$this -> datasec); 
  155. $ctrldir = implode(''$this -> ctrl_dir); 
  156.  
  157. return 
  158. $data . 
  159. $ctrldir . 
  160. $this -> eof_ctrl_dir . 
  161. pack('v', sizeof($this -> ctrl_dir)) . // total # of entries "on this disk" 
  162. pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall 
  163. pack('V'strlen($ctrldir)) . // size of central dir 
  164. pack('V'strlen($data)) . // offset to start of central dir 
  165. "x00x00"// .zip file comment length 
  166. // end of the 'file()' method 
  167. // end of the 'PHPZip' class 
  168. ?> 

使用方法:

 

 
  1. <?php 
  2. $z = new PHPZip(); //新建立一個zip的類 
  3. //方法一: 
  4. $z -> Zip("""out1.zip"); //添加當前目錄和子目錄下的所有檔案 
  5. //方法二: 
  6. $files=array('1.txt','gb.txt'); 
  7. $files[]='5.txt'
  8. $z -> Zip($files"out2.zip"); //添加文件列表 
  9. //方法三: 
  10. $z -> Zip("/usr/local/sext/""out3.zip"); //添加指定目錄 
  11. ?> 

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区直播精品电影| 欧美黑人狂野猛交老妇| 欧美日韩人人澡狠狠躁视频| 日韩av在线导航| 亚洲精品久久久久久久久| 91国内在线视频| 国产精品视频永久免费播放| 黑人极品videos精品欧美裸| 精品国产美女在线| 成人羞羞国产免费| 亚洲天堂第一页| 亚洲深夜福利网站| 久久久在线免费观看| 日韩欧美在线一区| 国产一区二区在线播放| 亚洲国产精品视频在线观看| 亚洲国产精品va在看黑人| 尤物九九久久国产精品的分类| 亚洲欧美日韩国产中文专区| 懂色av一区二区三区| 日韩一级裸体免费视频| 九九热精品视频国产| 久久九九全国免费精品观看| 日韩高清电影好看的电视剧电影| 欧美日韩国产精品一区二区不卡中文| 亚洲欧美制服另类日韩| 精品久久久999| 91久久精品在线| 日韩视频免费看| 久久精品国亚洲| 精品久久久久久中文字幕| 最新国产精品亚洲| 永久免费精品影视网站| 亚洲mm色国产网站| 欧美体内谢she精2性欧美| 日韩精品免费在线视频观看| 亚洲精品国产电影| 亚洲在线观看视频| 亚洲社区在线观看| 欧美极品少妇xxxxx| 91精品久久久久久久久不口人| 亚洲最大福利视频网站| 亚洲精品不卡在线| 亚洲国产欧美在线成人app| 亚洲人成电影在线播放| 亚洲精品久久久久中文字幕欢迎你| 亚洲摸下面视频| 成人免费在线视频网址| 欧美成人午夜剧场免费观看| 另类视频在线观看| 欧美影院成年免费版| 91po在线观看91精品国产性色| 亚洲一品av免费观看| 欧美黄色www| 日韩精品一区二区视频| 亚洲高清久久久久久| 欧美富婆性猛交| 亚洲变态欧美另类捆绑| 国产一区二区三区精品久久久| 黑人巨大精品欧美一区二区免费| 欧美日韩亚洲成人| 伊人男人综合视频网| 日韩欧美在线国产| 欧美日韩一区免费| 国产精品成人av性教育| 亚洲精品成人av| 欧美限制级电影在线观看| 国产免费一区视频观看免费| 日韩风俗一区 二区| 国内精品视频久久| 亚洲综合中文字幕在线观看| 成人激情春色网| 欧美有码在线视频| 欧美日韩中文在线| 亚洲第一色中文字幕| 久久高清视频免费| 国产精品免费一区豆花| 久久国产天堂福利天堂| 国产精品999999| www.欧美精品一二三区| 精品国产精品自拍| 亚洲香蕉成视频在线观看| 亚洲国产免费av| 欧美日韩性视频在线| 日韩中文字幕在线看| 在线观看精品国产视频| 亚洲人成五月天| 欧美精品制服第一页| 亚洲欧洲黄色网| 亚州精品天堂中文字幕| 亚洲免费视频观看| 国产一区二区三区中文| 国产成人亚洲综合91精品| 91精品国产综合久久香蕉922| 91在线中文字幕| 91亚洲永久免费精品| 亚洲第一页自拍| 国产精品亚洲自拍| 欧美高清视频免费观看| 91麻豆国产语对白在线观看| 欧美与欧洲交xxxx免费观看| 国语自产精品视频在线看| 69国产精品成人在线播放| 成人精品一区二区三区电影免费| 精品国产电影一区| 日韩欧美黄色动漫| 国产一区二区三区日韩欧美| 在线观看日韩www视频免费| 国产成人亚洲综合91| 国产精品成人v| 中文字幕免费精品一区| 日韩av一区二区在线| 8x拔播拔播x8国产精品| 久久亚洲成人精品| 日韩免费看的电影电视剧大全| 亚洲国产精品国自产拍av秋霞| 日韩在线视频网| 久久99久国产精品黄毛片入口| 国产精品日韩在线一区| 性亚洲最疯狂xxxx高清| 中文字幕在线国产精品| 青青草成人在线| 国内精品久久影院| 日韩国产欧美精品在线| 欧美大学生性色视频| 欧美精品国产精品日韩精品| 久久久久国产精品免费网站| 久久韩国免费视频| 成人网在线免费看| 97在线免费视频| 欧美日韩国产一区中文午夜| 亚洲最大中文字幕| 日韩一区二区精品视频| 亚洲国产91色在线| 91影视免费在线观看| 亚洲18私人小影院| 欧美精品久久久久久久| 欧美日本高清视频| 日韩精品视频在线| 亚洲毛片在线观看| 92国产精品久久久久首页| 91精品视频在线| 国产精品精品一区二区三区午夜版| 亚洲精品永久免费精品| 国产精品黄色影片导航在线观看| 日韩精品视频中文在线观看| 国产欧美久久一区二区| 国产精品羞羞答答| 亚洲色图13p| 欧美激情网友自拍| 欧美国产日韩二区| 91精品久久久久久久久久久久久| 精品视频中文字幕| 欧美另类第一页| 亚洲国产婷婷香蕉久久久久久| 亚洲在线免费观看| 国产精品福利网| 精品毛片三在线观看| 久久影院中文字幕| 日韩亚洲国产中文字幕| 亚洲第一福利在线观看| 日本中文字幕成人| 国产99久久久欧美黑人| 亚洲欧美成人网|