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

首頁 > 語言 > PHP > 正文

PHP ZIP壓縮類代碼

2024-09-04 11:44:08
字體:
來源:轉載
供稿:網友

本程序可以快速的實現把我們的文件利用php壓縮類壓縮成我們想的zip,或者rar 的壓縮包,后綴名可以自定義,壓縮算法是來自國外一個網站抄的.

首先實例化,然后傳參,兩個參數,第一個關于你文件地址的一個Array,第二個是要你要保存的壓縮包文件的絕對地址.

For example,代碼如下:

  1. $zipfiles =array("/root/pooy/test1.txt","/root/pooy/test2.txt"); 
  2.        $z = new PHPZip(); 
  3.        //$randomstr = random(8); 
  4.        $zipfile = TEMP."/photocome_".$groupid.".zip"
  5.  
  6.        $z->Zip($zipfiles$zipfile); 

添加文件列表PHP的ZIP壓縮類如下,代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品在线看| 色偷偷噜噜噜亚洲男人| 国产日产欧美a一级在线| 日本一欧美一欧美一亚洲视频| 国产精品视频久久久| 中文日韩电影网站| 日韩av大片免费看| 奇门遁甲1982国语版免费观看高清| 久热爱精品视频线路一| 欧美大肥婆大肥bbbbb| 日韩高清电影免费观看完整版| 国产亚洲精品高潮| 国产精品亚洲激情| 国产成人精品日本亚洲| 国产精品视频26uuu| 日韩欧美亚洲一二三区| 91wwwcom在线观看| 精品国产自在精品国产浪潮| 日韩欧美在线观看| 久久夜色精品国产欧美乱| 中文字幕av一区二区| 国产亚洲一区二区精品| 一本色道久久88精品综合| 国产精品网站入口| 亚洲视频777| 欧美极品美女视频网站在线观看免费| 亚洲精品久久在线| 亚洲国产99精品国自产| 国产日韩欧美在线视频观看| 亚洲视频在线看| 日韩国产欧美精品在线| 国产成人亚洲综合91精品| 精品色蜜蜜精品视频在线观看| 欧美激情精品在线| 欧美日韩另类字幕中文| 亚洲xxxxx电影| 高清日韩电视剧大全免费播放在线观看| 欧美成人午夜视频| 久久精品久久久久久国产 免费| 国模私拍一区二区三区| 成人h猎奇视频网站| 成人av番号网| 日韩美女av在线免费观看| 欧美成人自拍视频| 久久精品国产亚洲| 日韩中文字幕亚洲| 欧美多人爱爱视频网站| 91精品国产自产在线老师啪| 国产亚洲精品一区二区| 亚洲天堂开心观看| 91精品国产综合久久香蕉的用户体验| 日韩在线小视频| 亚洲欧美精品在线| 成人福利网站在线观看| 国产精品人成电影在线观看| 日韩精品视频在线| 国产精品露脸av在线| 色视频www在线播放国产成人| 亚洲性生活视频在线观看| 午夜精品一区二区三区在线播放| 性欧美xxxx视频在线观看| 国产精品第一第二| 国产欧美中文字幕| 国产精品揄拍一区二区| 亚洲激情视频网| 色噜噜久久综合伊人一本| 成人激情春色网| 欧美激情乱人伦一区| 国产高清在线不卡| 久久久噜久噜久久综合| 国产精品三级美女白浆呻吟| 久久精品久久久久久国产 免费| 亚洲精品久久久久中文字幕二区| 久久精品国产电影| 国产97在线视频| 91欧美精品成人综合在线观看| 日韩中文av在线| 久久精品国产清自在天天线| 亚洲人成毛片在线播放| 亚洲免费电影在线观看| 国产视频丨精品|在线观看| 精品国产一区二区三区久久狼黑人| 国产精品三级久久久久久电影| 精品国产自在精品国产浪潮| 91色在线视频| 91久久精品视频| 亚洲一区二区三区成人在线视频精品| 96精品久久久久中文字幕| 日韩精品中文字幕在线| 亚洲区中文字幕| 国产成人免费av| 亚洲在线观看视频网站| 97久久精品人搡人人玩| 国内精品一区二区三区| 亚洲精品久久在线| 91在线看www| 欧美高清在线观看| 欧美视频一区二区三区…| 欧美天堂在线观看| 欧美激情性做爰免费视频| 亚洲毛片在线观看.| 91亚洲国产成人精品性色| 91wwwcom在线观看| 欧美一区二区三区四区在线| 日韩亚洲成人av在线| 91在线视频九色| 色999日韩欧美国产| 中文字幕亚洲欧美一区二区三区| 亚洲精品福利在线观看| 欧美精品videosex牲欧美| 91中文字幕一区| 亚洲视频在线播放| 亚洲国产精品女人久久久| 亚洲欧洲日韩国产| 亚洲黄色av女优在线观看| 5252色成人免费视频| 麻豆精品精华液| 欧美大片欧美激情性色a∨久久| 日韩精品视频免费| 亚洲日韩欧美视频| 最近2019中文免费高清视频观看www99| 欧美性高潮床叫视频| 亚洲第五色综合网| 亚洲 日韩 国产第一| 亚洲r级在线观看| 日韩网站免费观看| 亚洲黄在线观看| 欧美激情视频免费观看| 国产aⅴ夜夜欢一区二区三区| 在线亚洲国产精品网| 国产免费一区二区三区在线能观看| 精品久久久久久久久久ntr影视| 国产在线a不卡| 国产精品一区av| 亚洲网站在线播放| 国产亚洲免费的视频看| 国产精品第3页| 欧美成人激情视频免费观看| 欧美性受xxxx白人性爽| 日本精品va在线观看| 国产一区欧美二区三区| 亚洲视频国产视频| 国产欧美一区二区三区四区| 亚洲人成亚洲人成在线观看| 亚洲xxxxx| 91精品免费久久久久久久久| 国产日韩在线视频| 国产日韩av在线播放| 欧美亚洲午夜视频在线观看| 91亚洲精品在线| 97视频在线播放| 亚洲第一精品夜夜躁人人躁| 亚洲精品狠狠操| 欧美成人高清视频| 久久成年人免费电影| 2019av中文字幕| 日韩成人免费视频| 夜夜嗨av一区二区三区免费区| 91精品国产综合久久香蕉的用户体验| 在线视频国产日韩| 国产精品va在线播放| 欧美精品在线免费观看| 另类天堂视频在线观看| 久久成人免费视频|