Heim > Backend-Entwicklung > PHP-Tutorial > php怎么压缩一个文件夹里面所有的文件到zip文件里面

php怎么压缩一个文件夹里面所有的文件到zip文件里面

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-13 13:13:04
Original
1136 Leute haben es durchsucht

php如何压缩一个文件夹里面所有的文件到zip文件里面?
php如何压缩一个文件夹里面所有的文件到zip文件里面?

如我的localhost下有个test文件夹,内部有很多文件和文件夹,如何把test里面所有东西打包成 test.zip?

------解决方案--------------------

PHP code

    Function ReadFileHeader($zip){
        $binary_data = fread($zip, 30);
        $data = unpack('vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $binary_data);

        $header['filename'] = fread($zip, $data['filename_len']);
        IF($data['extra_len'] != 0){$header['extra'] = fread($zip, $data['extra_len']);}Else{$header['extra'] = '';}

        $header['compression'] = $data['compression'];
        $header['size'] = $data['size'];
        $header['compressed_size'] = $data['compressed_size'];
        $header['crc'] = $data['crc'];
        $header['flag'] = $data['flag'];
        $header['mdate'] = $data['mdate'];
        $header['mtime'] = $data['mtime'];

        IF($header['mdate'] && $header['mtime']){
            $hour = ($header['mtime']&0xF800) >> 11;
            $minute = ($header['mtime']&0x07E0) >> 5;
            $seconde = ($header['mtime']&0x001F) * 2;
            $year = (($header['mdate']&0xFE00) >> 9) + 1980;
            $month = ($header['mdate']&0x01E0) >> 5;
            $day = $header['mdate']&0x001F;
            $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
        }Else{
            $header['mtime'] = time();
        }

        $header['stored_filename'] = $header['filename'];
        $header['status'] = "ok";
        Return $header;
    }

    Function ReadCentralFileHeaders($zip){
        $binary_data = fread($zip, 46);
        $header = unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $binary_data);

        IF($header['filename_len'] != 0)
            $header['filename'] = fread($zip, $header['filename_len']);
        Else $header['filename'] = '';

        IF($header['extra_len'] != 0)
            $header['extra'] = fread($zip, $header['extra_len']);
        Else $header['extra'] = '';

        IF($header['comment_len'] != 0)
            $header['comment'] = fread($zip, $header['comment_len']);
        Else $header['comment'] = '';

        IF($header['mdate'] && $header['mtime']){
            $hour = ($header['mtime'] &0xF800) >> 11;
            $minute = ($header['mtime'] &0x07E0) >> 5;
            $seconde = ($header['mtime'] &0x001F) * 2;
            $year = (($header['mdate'] &0xFE00) >> 9) + 1980;
            $month = ($header['mdate'] &0x01E0) >> 5;
            $day = $header['mdate'] &0x001F;
            $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year);
        }Else{
            $header['mtime'] = time();
        }
        $header['stored_filename'] = $header['filename'];
        $header['status'] = 'ok';
        IF(substr($header['filename'], -1) == '/')
            $header['external'] = 0x41FF0010;
        Return $header;
    }

    Function ReadCentralDir($zip, $zip_name){
        $size = filesize($zip_name);
        IF($size  readfileheader($zip);

        IF(substr($to, -1) != "/") $to .= "/";
        IF(!@is_dir($to)) @mkdir($to, 0777);

        $pth = explode("/", dirname($header['filename']));
        For($i = 0;isset($pth[$i]);$i++){
            IF(!$pth[$i]) continue;
            $pthss .= $pth[$i] . "/";
            IF(!is_dir($to . $pthss)) @mkdir($to . $pthss, 0777);
        }
        IF(!($header['external'] == 0x41FF0010) && !($header['external'] == 16)){
            IF($header['compression'] == 0){
                $fp = @fopen($to . $header['filename'], 'wb');
                IF(!$fp) Return(-1);
                $size = $header['compressed_size'];

                While($size != 0){
                    $read_size = ($size 
                 
              
              
        
            
Nach dem Login kopieren
Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Über Header-Dateien
Aus 1970-01-01 08:00:00
0
0
0
Header-Problem
Aus 1970-01-01 08:00:00
0
0
0
So ändern Sie den Titel im Header dynamisch
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage