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 }
时间: 2024-08-24 23:19:13

php解压zip文件的相关文章

android zip4j之--解压zip文件并实时显示解压进度

Zip文件是我们经常用到压缩文件格式,android中在进行网络请求大批量数据时,通常会采用传递zip文件,这样做即可以减少网络流量的消耗,加快请求的响应速度,又可以减少对存储空间的要求,所以当我们将zip文件读取回来的时候,如何解压就是一个要解决的问题,虽然java本身提供了zip相关的API,但不是很强大,所以我们采用apache开源组织的zip4j,通过这个jar包可以十分轻松的解压zip文件. 回到项目中去,项目中有个需求是从服务器请求杂志,请求回来后给读者展示,但是由于公司自己做的电子

通过javascript在网页端解压zip文件并查看压缩包内容

WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代码很多, 而且包含大副的图片,那么就可以把js和css和jpg和png等各种数据通过服务端打包成zip传送到浏览器, 浏览器负责解压, css实用动态生成插入到dom中,js也用globalEval直接执行, jpg或者png各种图片文件由blob流转化为image, 直接插入到浏览器中: html

ubuntu解压zip文件中文乱码问题

通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip 注:xxx.zip为需要解压的文件名 ubuntu解压zip文件中文乱码问题

基于Android下载并解压Zip文件,更新UI简单帮助类

类似于:http://blog.csdn.net/jarlen/article/details/44794031 下载文件: /** * 下载文件 * * @param down_url * @param output * @param tmpDir */ private void download(String down_url, File output, File tmpDir) { InputStream inputStream = null; OutputStream outputStr

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 http://my.oschina.net/junn/blog/104464 PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下常用的示例供参考. 一.解压缩zip文件 ? 1 2 3 4 5 6 7 8 9 10 11 $zip = new ZipAr

Ubuntu中解决解压zip文件中文乱码问题

1. 通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip (用GBK, GB18030也可以) 有趣的是unzip的manual中并无这个选项的说明, unzip --help对这个参数有一行简单的说明. 2. 在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件 /etc/environment中加入2行 UNZIP="-O CP936" ZIPINFO="-O CP936"Ubuntu中解决解压zip文件中文乱码问题

Java 上传解压zip文件,并且解析文件里面的excel和图片

需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读,我把代码全部写到Controller里面.这个demo的file入参的类型是MultipartFile,很多网上的例子是File类型.这两个类型在解析文件的时候还是有点区别的. 第①个方法: 1 /** 2 * 这个deomo入参的类型是MultipartFile,很多网上的例子是File类型 3

JAVA解压ZIP文件

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import

PHP 解压 ZIP 文件到指定文件夹

本类实现参考 php manual 评论 /** * function: 解压zip 格式的文件 * author:friker * date:2015-15-14 * reference:http://php.net/manual/zh/ref.zip.php * all rights reserved:[email protected] */ class Unzip{ public function __construct(){ //init code here... header("con