本文实例讲述了php生成zip文件类。分享给大家供大家参考。具体如下:
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
|
<?php
/*
By: Matt Ford
Purpose: Basic class to create zipfiles
*/
class zipFile {
public $files = array ();
public $settings = NULL;
public $fileInfo = array (
"name" => "" ,
"numFiles" => 0,
"fullFilePath" => ""
);
private $fileHash = "" ;
private $zip = "" ;
public function __construct( $settings ) {
$this ->zipFile( $settings );
}
public function zipFile( $settings ) {
$this ->zip = new ZipArchive();
$this ->settings = new stdClass();
foreach ( $settings as $k => $v ) {
$this ->settings-> $k = $v ;
}
}
public function create() {
$this ->fileHash = md5(implode( "," , $this ->files));
$this ->fileInfo[ "name" ] = $this ->fileHash . ".zip" ;
$this ->fileInfo[ "numFiles" ] = count ( $this ->files);
$this ->fileInfo[ "fullFilePath" ] = $this ->settings->path .
"/" . $this ->fileInfo[ "name" ];
if ( file_exists ( $this ->fileInfo[ "fullFilePath" ])) {
return array (
false,
"already created: " . $this ->fileInfo[ "fullFilePath" ]
);
}
else {
$this ->zip->open( $this ->fileInfo[ "fullFilePath" ], ZIPARCHIVE::CREATE);
$this ->addFiles();
$this ->zip->close();
return array (
true,
"new file created: " . $this ->fileInfo[ "fullFilePath" ]
);
}
}
private function addFiles() {
foreach ( $this ->files as $k ) {
$this ->zip->addFile( $k , basename ( $k ));
}
}
}
$settings = array (
"path" => dirname( __FILE__ )
);
$zipFile = new zipFile( $settings );
$zipFile ->files = array (
"./images/navoff.jpg" ,
"./images/navon.jpg"
);
list( $success , $error ) = $zipFile ->create();
if ( $success === true) {
//success
}
else {
//error because: $error
}
?>
|
希望本文所述对大家的php程序设计有所帮助。