php解压zip文件

php实现解压zip文件

 1 function zip($filename, $path)
 2 {
 3 //        $filename = 'test.zip';
 4 //        $path = './document/2016-05-11/test.zip';
 5     $path_all = $_SERVER['DOCUMENT_ROOT'] . sp_get_asset_upload_path(mb_substr($path, 2));//think_cmf的获取文件路劲
 6     $file_name_head = mb_substr($path, 0, strrpos($path, "/"));
 7     if (!file_exists($path_all)) {
 8         echo '文件不存在';
 9     }
10     //z转码  将文件名和路径转成windows系统默认的gb2312编码,否则将会读取不到
11     $filename = iconv('utf-8', 'gb2312', $filename);
12     $path_all = iconv('utf-8', 'gb2312', $path_all);
13     //打开压缩包
14     $resource = zip_open($path_all);
15     $i = 0;
16     while ($dir_resource = zip_read($resource)) {
17         if (zip_entry_open($resource, $dir_resource)) {
18             $file_name = substr($path_all, 0, strrpos($path_all, "/")) . '/' . zip_entry_name($dir_resource);
19             $dir_name = zip_entry_name($dir_resource);
20             $file_path = substr($file_name, 0, strrpos($file_name, "/"));
21         }
22         if (!is_dir($file_path)) {
23             mkdir($file_path, 0777, true);
24         }
25         if (!is_dir($file_name)) {
26             $file_size = zip_entry_filesize($dir_resource);
27             //最大读取10M,如果文件过大,跳过解压,继续下一个
28             if ($file_size < (1024 * 1024 * 10)) {
29                 $file_content = zip_entry_read($dir_resource, $file_size);
30                 file_put_contents($file_name, $file_content);
31             }
32             //关闭当前
33             zip_entry_close($dir_resource);
34         }
35         $dir_name = iconv('gb2312', 'utf-8', $dir_name);
36         $data[$i][filename] = $file_name_head . '/' . $dir_name;
37         $data[$i]['size'] = $file_size;
38         $i++;
39     }
40     zip_close($resource);
41     return $data;
42 }

 

转载于:https://www.cnblogs.com/dreamysky/p/5905991.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值