设为首页 收藏本站
查看: 1093|回复: 0

[经验分享] dedecms中提取的zip压缩文件操作类zip.class.php

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-25 09:27:59 | 显示全部楼层 |阅读模式
从织梦DeDeCMS中提取的zip压缩文件操作类,包含zip文件压缩、解压缩、添加文件到压缩包中等多个实用的函数,注释详细方便使用。

下载:dedecms中提取的zip压缩文件操作类zip.class.php

包含的函数和简单的使用方法:

1.函数get_List($zip_name) ,函数作用:获取zip文件中的文件列表。函数参数 $zip_name  zip文件名。返回值 文件列表数组。

2.函数Add($files,$compact),函数作用:增加文件到压缩文件。函数参数 $files 需要增加的文件列表,可以是字符串也可以是数组,$compact 压缩文件名称。函数返回值  数组 压缩文件信息。

3.函数get_file(),函数作用:获取文件,获取后可以让其进行下载。

4.函数add_dir($name),函数作用:增加文件目录。函数参数 $name  目录名称。

5.函数CompileZipFile($filename, $tozipfilename,$ftype='dir'),函数作用:编译指定的文件为zip文件(filename可以为文件数组array、目录dir或单个文件file)。函数参数 $filename  文件名称,$tozipfilename  压缩文件名称,$ftype  压缩类型。返回值 整型 影响文件数。

6.函数ListDirFiles($dirname),函数作用:读取某文件夹的所有文件。函数参数 $dirname  目录名称。返回值 如果失败则返回false。

7.函数add_File($data, $name, $compact = 1),函数作用:增加文件。函数参数 $data  数据,$name  名称,$compact  压缩。

8.函数ExtractAll ( $zn, $to),函数作用:解压整个压缩包  直接用 Extract 会有路径问题,本函数先从列表中获得文件信息并创建好所有目录然后才运行 Extract。函数参数 $zn zip文件名称,$to 解压到的目录地址。

9.函数Extract ( $zn, $to, $index = Array(-1) ),函数作用:解压单个文件。函数参数 $zn zip文件名称,$to 解压到的目录地址。

简单使用方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
include "zip.class.php";
$zip = new zip();
//获取压缩包文件列表
print_r($zip->get_List("www.zip"));

//向压缩包中增加文件
print_r($zip->Add("test.txt","www.zip"));

//压缩文件
echo $zip->CompileZipFile("test.txt","test.zip","file");

//压缩多个文件
echo $zip->CompileZipFile(array('test1.txt','test2.jpg','test3.png'),"test.zip","array");

//压缩目录
echo $zip->CompileZipFile("test","test.zip","dir");

//目录文件列表
print_r($zip->ListDirFiles("a"));

//解压所有文件
$zip->ExtractAll("www.zip","www");

//解压单个文件
$zip->Extract("www.zip","www",1);
?>




zip.class.php完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
<?php
/**
* Zip压缩类
*
* @version        $Id: zip.class.php 1 15:21 2010年7月5日Z tianya $
* @package        DedeCMS.Libraries
* @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
* @license        http://help.dedecms.com/usersguide/license.html
* @link           http://www.dedecms.com
*/
class zip
{
    var $datasec, $ctrl_dir = array();
    var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    var $old_offset = 0; var $dirs = Array(".");

    /**
     *  获取zip文件中的文件列表
     *
     * @access    public
     * @param     string  $zip_name  zip文件名
     * @return    array
     */
    function get_List($zip_name)
    {
        $ret = '';
        $zip = @fopen($zip_name, 'rb');
        if(!$zip)
        {
            return(0);
        }
        $centd = $this->ReadCentralDir($zip,$zip_name);
        @rewind($zip);
        @fseek($zip, $centd['offset']);
        for ($i=0; $i<$centd['entries']; $i++)
        {
            $header = $this->ReadCentralFileHeaders($zip);
            $header['index'] = $i;$info['filename'] = $header['filename'];
            $info['stored_filename'] = $header['stored_filename'];
            $info['size'] = $header['size'];$info['compressed_size']=$header['compressed_size'];
            $info['crc'] = strtoupper(dechex( $header['crc'] ));
            $info['mtime'] = $header['mtime']; $info['comment'] = $header['comment'];
            $info['folder'] = ($header['external']==0x41FF0010||$header['external']==16)?1:0;
            $info['index'] = $header['index'];$info['status'] = $header['status'];
            $ret[]=$info; unset($header);
        }
        return $ret;
    }

    /**
     *  增加文件到压缩文件
     *
     * @access    public
     * @param     string  $files 需要增加的文件列表,可以是字符串也可以是数组
     * @param     string  $compact 压缩文件名称
     * @return    array  压缩文件信息
     */
    function Add($files,$compact)
    {
        if(!is_array($files[0]))
        {
            $files=Array($files);
        }
        for($i=0;$files[$i];$i++)
        {
            $fn = $files[$i];
            if(!in_Array(dirname($fn[0]),$this->dirs))
            {
                $this->add_Dir(dirname($fn[0]));
            }
            if(basename($fn[0]))
            {
                $ret[basename($fn[0])]=$this->add_File($fn[1],$fn[0],$compact);
            }
        }
        return $ret;
    }

    /**
     *  获取文件,获取后可以让其进行下载
     *
     * @access    public
     * @return    void
     */
    function get_file()
    {
        $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)) . "\x00\x00";
    }

    /**
     *  增加文件目录
     *
     * @access    public
     * @param     string  $name  目录名称
     * @return    void
     */
    function add_dir($name)
    {
        $name = str_replace("\\", "/", $name);
        $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";
        $fr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
        $fr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0);
        $this -> datasec[] = $fr;
        $new_offset = strlen(implode("", $this->datasec));
        $cdrec = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";
        $cdrec .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
        $cdrec .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 );
        $ext = "\xff\xff\xff\xff";
        $cdrec .= pack("V", 16 ).pack("V", $this -> old_offset ).$name;
        $this -> ctrl_dir[] = $cdrec;
        $this -> old_offset = $new_offset;
        $this -> dirs[] = $name;
    }

    /**
     *  编译指定的文件为zip文件(filename可以为文件数组array、目录dir或单个文件file)
     *
     * @access    public
     * @param     string  $filename  文件名称
     * @param     string  $tozipfilename  压缩文件名称
     * @param     string  $ftype  压缩类型
     * @return    int  影响文件数
     */
    function CompileZipFile($filename, $tozipfilename,$ftype='dir')
    {
        if (@function_exists('gzcompress'))
        {
            if($ftype=='dir')
            {
                $filelist =  $this->ListDirFiles($filename);
            }
            else if($ftype=='file')
            {
                $filelist[] =  $filename;
            }
            else
            {
                $filelist =  $filename;
            }
            $i = 0;
            if(count($filelist)>0)
            {
                foreach($filelist as $filename)
                {
                    if (is_file($filename))
                    {
                        $i++;
                        $fd = fopen ($filename, "r");
                        if(filesize($filename)>0)
                        {
                            $content = fread($fd, filesize($filename));
                        }
                        else
                        {
                            $content = ' ';
                        }
                        fclose ($fd);

                        //if (is_array($dir)) $filename = basename($filename);
                        $this->add_File($content, $filename);
                    }
                }
                $out = $this->get_file();
                $fp = fopen($tozipfilename, "w");
                fwrite($fp, $out, strlen($out));
                fclose($fp);
            }
            return $i;
        }
        else
        {
            return 0;
        }
    }

    /**
     *  读取某文件夹的所有文件
     *
     * @access    public
     * @param     string  $dirname  目录名称
     * @return    mix  如果失败则返回false
     */
    function ListDirFiles($dirname)
    {
        $files = array();
        if(is_dir($dirname))
        {
            $fh = opendir($dirname);
            while (($file = readdir($fh)) !== false)
            {
                if (strcmp($file, '.')==0 || strcmp($file, '..')==0)
                {
                    continue;
                }
                $filepath = $dirname . '/' . $file;
                if ( is_dir($filepath) )
                {
                    $files = array_merge($files, $this->ListDirFiles($filepath));
                }
                else
                {
                    array_push($files, $filepath);
                }
            }
            closedir($fh);
        }
        else
        {
            $files = false;
        }
        return $files;
    }

    /**
     *  增加文件
     *
     * @access    public
     * @param     string  $data  数据
     * @param     string  $name  名称
     * @param     string  $compact  压缩
     * @return    string
     */
    function add_File($data, $name, $compact = 1)
    {
        $name     = str_replace('\\', '/', $name);
        $dtime    = dechex($this->DosTime());

        $hexdtime = '\x' . $dtime[6] . $dtime[7].'\x'.$dtime[4] . $dtime[5]
        . '\x' . $dtime[2] . $dtime[3].'\x'.$dtime[0].$dtime[1];
        eval('$hexdtime = "' . $hexdtime . '";');
        if($compact)
        $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00".$hexdtime;
        else
        {
            $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00".$hexdtime;
        }
        $unc_len = strlen($data); $crc = crc32($data);
        if($compact)
        {
            $zdata = gzcompress($data); $c_len = strlen($zdata);
            $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
        }
        else
        {
            $zdata = $data;
        }
        $c_len=strlen($zdata);
        $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
        $fr .= pack('v', strlen($name)).pack('v', 0).$name.$zdata;
        $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
        $this -> datasec[] = $fr;
        $new_offset        = strlen(implode('', $this->datasec));
        if($compact)
        {
            $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00";
        }
        else
        {
            $cdrec = "\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00";
        }
        $cdrec .= $hexdtime.pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
        $cdrec .= pack('v', strlen($name) ).pack('v', 0 ).pack('v', 0 );
        $cdrec .= pack('v', 0 ).pack('v', 0 ).pack('V', 32 );
        $cdrec .= pack('V', $this -> old_offset );
        $this -> old_offset = $new_offset;
        $cdrec .= $name;
        $this -> ctrl_dir[] = $cdrec;
        return true;
    }

    /**
     *  返回时间
     *
     * @access    public
     * @return    int
     */
    function DosTime()
    {
        $timearray = getdate();
        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);
    }

    /**
     *  解压整个压缩包
     *  直接用 Extract 会有路径问题,本函数先从列表中获得文件信息并创建好所有目录然后才运行 Extract
     *
     * @access    public
     * @param     string  $zn zip文件名称
     * @param     string  $to 解压到的目录地址
     * @return    string
     */
    function ExtractAll ( $zn, $to)
    {
        if(substr($to,-1)!="/")
        {
            $to .= "/";
        }
        $files = $this->get_List($zn);
        $cn = count($files);
        if(is_array($files))
        {
            for($i=0;$i<$cn;$i++)
            {
                if($files[$i]['folder']==1)
                {
                    @mkdir($to.$files[$i]['filename'],$GLOBALS['cfg_dir_purview']);
                    @chmod($to.$files[$i]['filename'],$GLOBALS['cfg_dir_purview']);
                }
            }
        }
        $this->Extract ($zn,$to);
    }

    /**
     *  解压单个文件
     *
     * @access    public
     * @param     string  $zn zip文件名称
     * @param     string  $to 解压到的目录地址
     * @return    string
     */
    function Extract ( $zn, $to, $index = Array(-1) )
    {
        $ok = 0; $zip = @fopen($zn,'rb');
        if(!$zip)
        {
            return(-1);
        }
        $cdir = $this->ReadCentralDir($zip,$zn);
        $pos_entry = $cdir['offset'];
        if(!is_array($index))
        {
            $index = array($index);
        }
        for($i=0; isset($index[$i]);$i++)
        {
            if(intval($index[$i])!=$index[$i]||$index[$i]>$cdir['entries'])
            {
                return(-1);
            }
        }
        for ($i=0; $i<$cdir['entries']; $i++)
        {
            @fseek($zip, $pos_entry);
            $header = $this->ReadCentralFileHeaders($zip);
            $header['index'] = $i; $pos_entry = ftell($zip);
            @rewind($zip); fseek($zip, $header['offset']);
            if(in_array("-1",$index)||in_array($i,$index))
            {
                $stat[$header['filename']]=$this->ExtractFile($header, $to, $zip);
            }

        }
        fclose($zip);
        return $stat;
    }

    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 < 277)
        {
            $maximum_size = $size;
        }
        else
        {
            $maximum_size=277;
        }
        @fseek($zip, $size-$maximum_size);
        $pos = ftell($zip); $bytes = 0x00000000;

        while ($pos < $size)
        {
            $byte = @fread($zip, 1); $bytes=($bytes << 8) | Ord($byte);
            if ($bytes == 0x504b0506)
            {
                $pos++; break;
            }
            $pos++;
        }
        $data = @unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size',fread($zip, 18));
        if ($data['comment_size'] != 0)
        {
            $centd['comment'] = fread($zip, $data['comment_size']);
        }
        else
        {
            $centd['comment'] = ''; $centd['entries'] = $data['entries'];
        }
        $centd['disk_entries'] = $data['disk_entries'];
        $centd['offset'] = $data['offset'];$centd['disk_start'] = $data['disk_start'];
        $centd['size'] = $data['size'];  $centd['disk'] = $data['disk'];
        return $centd;
    }

    function ExtractFile($header,$to,$zip)
    {
        $header = $this->readfileheader($zip);
        $header['external'] = (!isset($header['external']) ? 0 : $header['external']);
        if(substr($to,-1)!="/")
        {
            $to.="/";
        }
        if(!@is_dir($to))
        {
            @mkdir($to,$GLOBALS['cfg_dir_purview']);
        }
        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 < 2048 ? $size : 2048);
                    $buffer = fread($zip, $read_size);
                    $binary_data = pack('a'.$read_size, $buffer);
                    @fwrite($fp, $binary_data, $read_size);
                    $size -= $read_size;
                }
                fclose($fp);
                touch($to.$header['filename'], $header['mtime']);
            }
            else
            {
                $fp = @fopen($to.$header['filename'].'.gz','wb');
                if(!$fp)
                {
                    return(-1);
                }
                $binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($header['compression']),
                Chr(0x00), time(), Chr(0x00), Chr(3));
                fwrite($fp, $binary_data, 10);
                $size = $header['compressed_size'];
                while ($size != 0)
                {
                    $read_size = ($size < 1024 ? $size : 1024);
                    $buffer = fread($zip, $read_size);
                    $binary_data = pack('a'.$read_size, $buffer);
                    @fwrite($fp, $binary_data, $read_size);
                    $size -= $read_size;
                }

                $binary_data = pack('VV', $header['crc'], $header['size']);
                fwrite($fp, $binary_data,8); fclose($fp);
                $gzp = @gzopen($to.$header['filename'].'.gz','rb') or die("Cette archive est compress");
                if(!$gzp)
                {
                    return(-2);
                }
                $fp = @fopen($to.$header['filename'],'wb');
                if(!$fp)
                {
                    return(-1);
                }
                $size = $header['size'];
                while ($size != 0)
                {
                    $read_size = ($size < 2048 ? $size : 2048);
                    $buffer = gzread($gzp, $read_size);
                    $binary_data = pack('a'.$read_size, $buffer);
                    @fwrite($fp, $binary_data, $read_size);
                    $size -= $read_size;
                }
                fclose($fp); gzclose($gzp);
                touch($to.$header['filename'], $header['mtime']);
                @unlink($to.$header['filename'].'.gz');
            }
        }
        return true;
    }
}



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-169104-1-1.html 上篇帖子: F5负载均衡之路 下篇帖子: DedeCMS织梦文章内容图片绝对路径修改方法 dedecms 压缩文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表