实例代码:
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
|
public function downLoad( $dataUrl , $saveName ) { $datalist = [ ROOT_PATH. '/public/introduce/110.docx' , ROOT_PATH. '/public/upfile/110.zip' ]; // print_r($datalist);die; $filename = ROOT_PATH. '\public\/' . $saveName . '.zip' ; if ( file_exists ( $filename )){ unlink( $filename ); } $zip = new \ZipArchive(); if ( $zip ->open( $filename ,\ZipArchive::CREATE)!== true){ exit ( '无法打开文件,或者文件创建失败' ); } foreach ( $dataUrl as $index => $item ) { if (DIRECTORY_SEPARATOR== '\\' ){ $item = str_replace ( '/' ,DIRECTORY_SEPARATOR, $item ); $filename = str_replace ( '/' ,DIRECTORY_SEPARATOR, $filename ); } // var_dump($item); // var_dump(file_exists($item));die; if ( file_exists ( $item )){ $zip ->addFile( $item , basename ( $item )); } } $zip ->close(); if (! file_exists ( $filename )){ exit ( "无法找到文件" ); //即使创建,仍有可能失败 } header( 'Content-Type: application/zip' ); header( 'Content-disposition: attachment; filename=' . basename ( $filename )); header( 'Content-Length: ' . filesize ( $filename )); @readfile( $filename ); @unlink ( $filename ); } |
注意:里面的路径全部用绝对路径,不然会找不到文件
附赠其他操作:
解压缩zip文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public function unzip_file( $file , $dir ){ // 实例化对象 $zip = new ZipArchive() ; //打开zip文档,如果打开失败返回提示信息 if ( $zip ->open( $file ) !== TRUE) { die ( "Could not open archive" ); } //将压缩文件解压到指定的目录下 $zip ->extractTo( $dir ); //关闭zip文档 $zip ->close(); } |
获取解压文件目录
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
|
public function loopFun( $dir ) { $handle = opendir( $dir . "." ); //定义用于存储文件名的数组 $array_file = array (); while (false !== ( $file = readdir( $handle ))) { if ( $file != "." && $file != ".." ) { $array_file [] = $dir . '/' . $file ; //输出文件名 } } closedir ( $handle ); return $array_file ; //print_r($array_file); } |
大家可以在本地测试下,感谢大家的学习和对服务器之家的支持。
原文链接:https://www.cnblogs.com/zhangdong156/p/11771174.html