您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php文件压缩之PHPZip类用法实例_PHP

2024/5/10 12:31:07发布28次查看
本文实例讲述了php文件压缩之phpzip类用法。分享给大家供大家参考。具体如下:
getfilelist($dir); } if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir); else chdir($curdir); if (count($filelist)>0) { foreach($filelist as $filename) { if (is_file($filename)) { $fd = fopen ($filename, r); $content = fread ($fd, filesize ($filename)); fclose ($fd); if (is_array($dir)) $filename = basename($filename); $this -> addfile($content, $filename); } } $out = $this -> file(); chdir($curdir); $fp = fopen($zipfilename, w); fwrite($fp, $out, strlen($out)); fclose($fp); } return 1; } else return 0;}function getfilelist($dir){ if (file_exists($dir)) { $args = func_get_args(); $pref = $args[1]; $dh = opendir($dir); while($files = readdir($dh)) { if (($files!=.)&&($files!=..)) { if (is_dir($dir.$files)) { $curdir = getcwd(); chdir($dir.$files); $file = array_merge($file, $this -> getfilelist(, $pref$files/)); chdir($curdir); } else $file[]=$pref.$files; } } closedir($dh); } return $file;}var $datasec = array();var $ctrl_dir = array();var $eof_ctrl_dir = x50x4bx05x06x00x00x00x00;var $old_offset = 0;/** * converts an unix timestamp to a four byte dos date and time format (date * in high two bytes, time in low two bytes allowing magnitude comparison). * * @param integer the current unix timestamp * * @return integer the current date in a four byte dos format * * @access private */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; } // end if return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] datasec[] = $fr; $new_offset = strlen(implode('', $this->datasec)); // now add to central directory record $cdrec = x50x4bx01x02; $cdrec .= x00x00; // version made by $cdrec .= x14x00; // version needed to extract $cdrec .= x00x00; // gen purpose bit flag $cdrec .= x08x00; // compression method $cdrec .= $hexdtime; // last mod time & date $cdrec .= pack('v', $crc); // crc32 $cdrec .= pack('v', $c_len); // compressed filesize $cdrec .= pack('v', $unc_len); // uncompressed filesize $cdrec .= pack('v', strlen($name) ); // length of filename $cdrec .= pack('v', 0 ); // extra field length $cdrec .= pack('v', 0 ); // file comment length $cdrec .= pack('v', 0 ); // disk number start $cdrec .= pack('v', 0 ); // internal file attributes $cdrec .= pack('v', 32 ); // external file attributes - 'archive' bit set $cdrec .= pack('v', $this -> old_offset ); // relative offset of local header $this -> old_offset = $new_offset; $cdrec .= $name; // optional extra field, file comment goes here // save to central directory $this -> ctrl_dir[] = $cdrec;} // end of the 'addfile()' method/** * dumps out file * * @return string the zipped file * * @access public */function file(){ $data = implode('', $this -> datasec); $ctrldir = implode('', $this -> ctrl_dir); return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v', sizeof($this -> ctrl_dir)) . // total # of entries on this disk pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall pack('v', strlen($ctrldir)) . // size of central dir pack('v', strlen($data)) . // offset to start of central dir x00x00; // .zip file comment length} // end of the 'file()' method} // end of the 'phpzip' class?>
使用方法:
zip(, out1.zip); //添加当前目录和子目录下的所有档案//方法二:$files=array('1.txt','gb.txt');$files[]='5.txt';$z -> zip($files, out2.zip); //添加文件列表//方法三:$z -> zip(/usr/local/sext/, out3.zip); //添加指定目录?>
希望本文所述对大家的php程序设计有所帮助。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product