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

首頁 > 開發 > PHP > 正文

一個PHP的ZIP壓縮類分享

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

功能:將文件壓縮成zip,或者rar的壓縮包。后綴名可以自定義。

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

使用例子:

復制代碼 代碼如下:


        $zipfiles =array("/root/pooy/test1.txt","/root/pooy/test2.txt");
        $z = new PHPZip();
        //$randomstr = random(8);
        $zipfile = TEMP."/photocome_".$groupid.".zip";
        $z->Zip($zipfiles, $zipfile); //添加文件列表


PHP的ZIP壓縮類如下:

復制代碼 代碼如下:


<?php
#
# PHPZip v1.2 by Sext (sext@neud.net) 2002-11-18
#     (Changed: 2003-03-01)
#
# 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 = "/x50/x4b/x05/x06/x00/x00/x00/x00";
    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('//', 'http://www.49028c.com/', $name);

        $dtime    = dechex($this->unix2DosTime($time));
        $hexdtime = '/x' . $dtime[6] . $dtime[7]
                   <a >Western union point</a> .  '/x' . $dtime[4] . $dtime[5]
                  . '/x' . $dtime[2] . $dtime[3]
                  . '/x' . $dtime[0] . $dtime[1];
        eval('$hexdtime = "' . $hexdtime . '";');

        $fr   = "/x50/x4b/x03/x04";
        $fr   .= "/x14/x00";            // ver needed to extract
        $fr   .= "/x00/x00";            // gen purpose bit flag
        $fr   .= "/x08/x00";            // 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 = "/x50/x4b/x01/x02";
        $cdrec .= "/x00/x00";                // version made by
        $cdrec .= "/x14/x00";                // version needed to extract
        $cdrec .= "/x00/x00";                // gen purpose bit flag
        $cdrec .= "/x08/x00";                // 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
            "/x00/x00";                             // .zip file comment length
    } // end of the 'file()' method

} // end of the 'PHPZip' class
?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品资源美女情侣酒店| 日产精品99久久久久久| 国产精品h片在线播放| 亚洲成人网av| 国产一区二区三区日韩欧美| 亚洲欧美日韩久久久久久| 亚洲free嫩bbb| 欧美色图在线视频| 1769国产精品| 久久精品成人一区二区三区| 久久久久久久久久国产| 在线看国产精品| 欧美丝袜美女中出在线| 韩日欧美一区二区| 欧美一区二区.| 亚洲国产精品系列| 欧美又大又粗又长| 狠狠躁夜夜躁久久躁别揉| 欧美精品在线视频观看| 国产精品日本精品| 日韩中文在线中文网三级| 97超碰蝌蚪网人人做人人爽| 日韩成人在线视频观看| 精品国产欧美一区二区三区成人| 亚洲人成网站999久久久综合| 久久欧美在线电影| 国产亚洲精品久久久优势| 欧美最顶级丰满的aⅴ艳星| 国产视频亚洲精品| 欧美激情第一页xxx| 亚洲欧美日韩精品久久奇米色影视| 精品久久久久久亚洲国产300| 国产精品久久久久久久久男| 国产精品国产自产拍高清av水多| 国产日韩欧美在线看| 国内精品小视频在线观看| 亚洲图片欧美日产| 91精品国产综合久久香蕉| 亚洲va久久久噜噜噜久久天堂| 亚洲精品视频在线播放| 91精品久久久久| 日韩av在线天堂网| 在线视频日本亚洲性| 日韩有码片在线观看| 亚洲精品www| 成人伊人精品色xxxx视频| 91精品成人久久| 啊v视频在线一区二区三区| 久久精品这里热有精品| 国产日本欧美视频| 欧美在线免费观看| 91精品国产91久久久久久吃药| 精品亚洲国产成av人片传媒| 国产精品精品视频| 久久久久免费视频| 中文字幕久久久| 91精品国产高清自在线看超| 中文字幕精品一区久久久久| 亚洲一区二区免费在线| 色系列之999| 97精品欧美一区二区三区| xxav国产精品美女主播| 国产精品视频自在线| 欧美激情亚洲精品| 欧洲日韩成人av| 欧美精品做受xxx性少妇| 欧美视频免费在线| 国内外成人免费激情在线视频网站| 国产视频在线观看一区二区| 亚洲一区美女视频在线观看免费| 日韩av在线一区二区| 国产精品欧美一区二区| xxav国产精品美女主播| 欧美日韩综合视频| 精品日韩美女的视频高清| 亚洲精品97久久| 欧美亚洲一区在线| 久久视频国产精品免费视频在线| 欧美日韩国产专区| 久久久成人av| 久久久人成影片一区二区三区| 国产成人精品一区二区三区| 日韩乱码在线视频| 91地址最新发布| 欧美黑人又粗大| 丰满岳妇乱一区二区三区| 国产在线视频91| 欧美性videos高清精品| 日韩欧美第一页| 日韩中文字幕精品视频| 欧美激情第99页| 国产成人一区二区三区| 91亚洲一区精品| 久久久999精品| 中日韩美女免费视频网址在线观看| www.xxxx精品| 成人做爰www免费看视频网站| 亚洲乱亚洲乱妇无码| 最近的2019中文字幕免费一页| 日韩电视剧免费观看网站| 国产日韩中文在线| 最近中文字幕mv在线一区二区三区四区| 欧美极品少妇xxxxⅹ免费视频| 国产网站欧美日韩免费精品在线观看| 欧美电影《睫毛膏》| 日韩国产欧美精品一区二区三区| 一区二区三区四区精品| 亚洲欧美日韩一区在线| 欧美日韩一区二区三区在线免费观看| 中文字幕亚洲一区在线观看| 欧美精品久久久久| 国产不卡av在线| 国产精品久久77777| 欧美高清视频一区二区| 日韩电影在线观看永久视频免费网站| 777777777亚洲妇女| 欧美www在线| 91精品久久久久久久久久久久久久| 亚洲欧美一区二区三区在线| 亚洲欧洲高清在线| 久久久999成人| 欧美成人午夜免费视在线看片| 亚洲第一区中文字幕| 亚洲精品国产综合久久| 久久艳片www.17c.com| 国产99在线|中文| 久久精品久久精品亚洲人| 4438全国成人免费| 日本高清不卡在线| 久久视频这里只有精品| 国产精品1区2区在线观看| 亚洲xxxx3d| 日韩欧美亚洲国产一区| 国产精品久久久久久影视| 亚洲黄色片网站| 国产精品av网站| 这里只有精品视频在线| 亚洲欧美精品一区| 91精品久久久久久| 亚洲第一网站免费视频| 亚洲色图25p| 国产亚洲欧美一区| 久热精品视频在线观看一区| 欧美精品一区二区免费| 欧美巨乳在线观看| 亚洲a级在线播放观看| 亚洲精品美女久久久久| 欧美激情综合色综合啪啪五月| 一区二区亚洲欧洲国产日韩| 一区二区三区精品99久久| 91高清视频在线免费观看| 久久精品91久久久久久再现| 91久久久久久久久久久久久| 精品国产福利视频| 青青a在线精品免费观看| 国产成人免费av电影| 国产精品青草久久久久福利99| 日韩av网站在线| 欧美性理论片在线观看片免费| 成人黄色中文字幕| 日韩在线观看你懂的| 美女少妇精品视频| 久久视频国产精品免费视频在线| 九九视频直播综合网|