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

首頁 > 網站 > 建站經驗 > 正文

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

2024-04-25 20:37:26
字體:
來源:轉載
供稿:網友

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

<?php

//

// PHPZip v1.2 by Sext (sext@neud.net)

//

// Makes zip archive

//

// Based on "Zip file creation class", uses zLib

//

//

class PHPZip

{

function Zip($dir, $zipfilename)

{

if (@function_exists('gzcompress'))

{

$curdir = getcwd();

if (is_array($dir))

{

$filelist = $dir;

}

else

{

$filelist = $this -> 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'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);

} // end of the 'unix2DosTime()' method

/**

* Adds "file" to archive

*

* @param string file contents

* @param string name of the file in the archive (may contains the path)

* @param integer the current timestamp

*

* @access public

*/

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"; // ver needed to extract

$fr .= "x00x00"; // gen purpose bit flag

$fr .= "x08x00"; // compression method

$fr .= $hexdtime; // last mod time and date

// "local file header" segment

$unc_len = strlen($data);

$crc = crc32($data);

$zdata = gzcompress($data);

$c_len = strlen($zdata);

$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug

$fr .= pack('V', $crc); // crc32

$fr .= pack('V', $c_len); // compressed filesize

$fr .= pack('V', $unc_len); // uncompressed filesize

$fr .= pack('v', strlen($name)); // length of filename

$fr .= pack('v', 0); // extra field length

$fr .= $name;

// "file data" segment

$fr .= $zdata;

// "data descriptor" segment (optional but necessary if archive is not

// served as file)

$fr .= pack('V', $crc); // crc32

$fr .= pack('V', $c_len); // compressed filesize

$fr .= pack('V', $unc_len); // uncompressed filesize

// add this entry to array

$this -> 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

?>

使用方法:

<?php

$z = new PHPZip(); //新建立一個zip的類

//方法一:

$z -> 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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九九久久国产免费| 日韩在线一区二区三区免费视频| 亚洲性av网站| 一道本无吗dⅴd在线播放一区| 免费91麻豆精品国产自产在线观看| 国产午夜精品全部视频在线播放| 久久91精品国产91久久久| 日韩天堂在线视频| 69av在线视频| 97超级碰在线看视频免费在线看| 亚洲精品在线看| 亚洲在线免费视频| 在线观看亚洲视频| www.日韩不卡电影av| 欧美日韩国产精品一区二区三区四区| 国产精品一二区| 国产区精品在线观看| 国产精品视频最多的网站| 伊是香蕉大人久久| 欧美极品少妇与黑人| www.99久久热国产日韩欧美.com| 久久精品视频在线观看| 国产精品国语对白| 国产精品久久久久av| 欧美日韩中文在线观看| 亚洲国产精品久久久久秋霞不卡| 一区二区三区黄色| 亚洲色图综合网| 亚洲小视频在线观看| 日韩av最新在线观看| 成人网中文字幕| 欧美午夜精品久久久久久浪潮| 成人97在线观看视频| 久久久黄色av| 亚洲一区二区三区sesese| 亚洲精品v天堂中文字幕| 视频在线观看一区二区| 91在线网站视频| 亚洲另类xxxx| 欧美一级淫片播放口| 欧美午夜激情视频| 爱福利视频一区| 97av在线视频| 欧美天堂在线观看| 久久久久久久久久亚洲| 久久久久国产精品www| 久久久久久国产免费| 乱亲女秽乱长久久久| 欧美综合在线第二页| 日韩中文字幕在线免费观看| 欧美孕妇毛茸茸xxxx| 中文字幕欧美日韩在线| 96pao国产成视频永久免费| 亚洲欧美中文日韩在线v日本| 成人黄色免费在线观看| 亚洲天堂精品在线| 日韩三级成人av网| 成人在线小视频| 国产精品久久久久久av下载红粉| 欧美亚洲成人精品| 日韩黄色高清视频| 91久久久久久国产精品| 久久久久久999| 亚洲欧美色婷婷| 青青a在线精品免费观看| 亚洲美女喷白浆| 欧美日韩一区二区三区| 中文字幕欧美日韩精品| 91精品国产91久久久久久吃药| 亚洲欧洲国产一区| 色伦专区97中文字幕| 久久久久久久999| 亚洲人成网在线播放| 亚洲日本欧美中文幕| 57pao成人永久免费视频| 2021久久精品国产99国产精品| 精品国产福利在线| 欧美成人午夜剧场免费观看| 成人啪啪免费看| 久久男人资源视频| 欧美成年人视频网站欧美| 98精品国产高清在线xxxx天堂| 国产一区二区三区直播精品电影| 欧美精品精品精品精品免费| 欧美在线免费视频| 黑丝美女久久久| 成人国产在线视频| 国产精品精品视频| 国语自产偷拍精品视频偷| 亚洲a成v人在线观看| 亚洲精品国精品久久99热| 亚洲欧美日韩精品| 精品中文字幕在线| 91综合免费在线| 久久久久成人网| 国产偷亚洲偷欧美偷精品| 2019中文在线观看| 欧美激情影音先锋| 中文字幕国内精品| 久久国产一区二区三区| 日韩精品免费在线| 深夜福利日韩在线看| 国产精品久久视频| 成人疯狂猛交xxx| 精品亚洲永久免费精品| 2019最新中文字幕| 久久韩国免费视频| 91精品视频在线看| 日韩视频精品在线| 日韩美女中文字幕| 亚洲国产91精品在线观看| 欧洲s码亚洲m码精品一区| 91精品国产亚洲| 午夜精品一区二区三区在线视频| 国产精品小说在线| 亚洲成人网久久久| 亚洲欧美日韩一区二区三区在线| 成人免费自拍视频| 欧美理论电影在线播放| 欧美亚洲国产另类| 日韩高清av一区二区三区| 国产成人av在线| 欧美日韩成人在线播放| 98精品在线视频| 色无极影院亚洲| 一本色道久久88精品综合| 欧美一级免费视频| 日韩黄色在线免费观看| 国产精品久久久久免费a∨大胸| 亚洲人成电影在线观看天堂色| 欧美高清理论片| 久久久综合av| 亚洲视频一区二区三区| 国产精品1234| 精品久久久香蕉免费精品视频| 欧美色道久久88综合亚洲精品| 久久久亚洲精选| 亚州av一区二区| 亚洲成人精品视频| 日韩亚洲综合在线| 国产黑人绿帽在线第一区| 国产精品自产拍在线观看中文| 亚洲va久久久噜噜噜久久天堂| 欧美激情国产日韩精品一区18| 久久精品视频在线观看| 日韩精品在线视频观看| 日本久久亚洲电影| 亚洲91精品在线| 亚洲欧美999| 亚洲图片欧洲图片av| 亚洲第一男人天堂| 91精品视频在线免费观看| 亚洲一区二区三区香蕉| 日韩精品免费一线在线观看| 国产一区二区成人| 精品国产乱码久久久久久婷婷| 欧美午夜精品久久久久久浪潮| 精品久久久久久久中文字幕| 亚洲欧洲在线播放| 国产精品va在线播放| 91免费视频国产| 欧美日韩另类视频| 欧美最猛性xxxxx亚洲精品| 亚洲第一av网站|