|
<div class="codetitle"><a style="CURSOR: pointer" data="96825" class="copybut" id="copybut96825" onclick="doCopy('code96825')"> 代码如下:<div class="codebody" id="code96825"> <?php / $Id: PHPZip.php / class PHPZip { var $datasec = array(); var $ctrl_dir = array(); var $eof_ctrl_dir = "x50x4bx05x06x00x00x00x00"; var $old_offset = 0; function Zip($dir,$zipfilename) { if (@function_exists('gzcompress')) { @set_time_limit("0"); $this->openFile($dir,$dir); $out = $this -> filezip(); $fp = fopen($zipfilename,"w"); fwrite($fp,$out,strlen($out)); fclose($fp); } } function openFile($path,$zipName) { $temp_path = $path; $temp_zip_path = $zipName; $zipDir = $zipName; if ($handle = @opendir($path)) { while (false !== ($file = readdir($handle))) { if($file !='.' and $file !='..'){ if(ereg('.',$file.@basename())) { $fd = fopen($path.'/'.$file,"r"); $fileValue = @fread ($fd,1024000); fclose ($fd); $this -> addFile($fileValue,$zipName . '/' . $file); } else { $this ->openFile($path.'/'.$file,$zipName . '/' . $file); } } } $zipName = $temp_zip_path; $path = $temp_path; closedir($handle); } } function unix2DosTime($unixtime = 0) { $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if ($timearray['year'] < 1980) { $timearray['year'] = 1980; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); } function addFile($data,$name,$time = 0) { $name = str_replace('','/',$name); $dtime = dechex($this->unix2DosTime($time)); $hexdtime = 'x' . $dtime[6] . $dtime[7] . 'x' . $dtime[4] . $dtime[5] . 'x' . $dtime[2] . $dtime[3] . 'x' . $dtime[0] . $dtime[1]; eval('$hexdtime = "' . $hexdtime . '";'); $fr = "x50x4bx03x04"; $fr .= "x14x00"; $fr .= "x00x00"; $fr .= "x08x00"; $fr .= $hexdtime; $unc_len = strlen($data); $crc = crc32($data); $zdata = gzcompress($data); $c_len = strlen($zdata); $zdata = substr(substr($zdata,strlen($zdata) - 4),2); $fr .= pack('V',$crc); $fr .= pack('V',$c_len); $fr .= pack('V',$unc_len); $fr .= pack('v',strlen($name)); $fr .= pack('v',0); $fr .= $name; $fr .= $zdata; $fr .= pack('V',$unc_len); $this -> datasec[] = $fr; $new_offset = strlen(implode('',$this->datasec)); $cdrec = "x50x4bx01x02"; $cdrec .= "x00x00"; $cdrec .= "x14x00"; $cdrec .= "x00x00"; $cdrec .= "x08x00"; $cdrec .= $hexdtime; $cdrec .= pack('V',$crc); $cdrec .= pack('V',$c_len); $cdrec .= pack('V',$unc_len); $cdrec .= pack('v',strlen($name) ); $cdrec .= pack('v',0 ); $cdrec .= pack('v',0 ); $cdrec .= pack('V',32 ); $cdrec .= pack('V',$this -> old_offset ); $this -> old_offset = $new_offset; $cdrec .= $name; $this -> ctrl_dir[] = $cdrec; } function filezip() { $data = implode('',$this -> datasec); $ctrldir = implode('',$this -> ctrl_dir); return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v',sizeof($this -> ctrl_dir)) . pack('v',sizeof($this -> ctrl_dir)) . pack('V',strlen($ctrldir)) . pack('V',strlen($data)) . "x00x00"; } } ?>
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|