php中解压压缩文件实例源码

做这个之前,没有接触过php压缩这一块,网上搜了一些,大多数都是php压缩类、压缩函数,少则几百行,多的就几千行代码。这对于我这种新手来说很摸不到头脑,再说我也不用这么复杂的功能。最后参考函数手册,理清楚了几个相关的函数后,就明白了怎么去整了。


PHP Zip File 函数

记得要开启 zip ,把 php.ini 中的 extension=php_zip.dll 前面的分号去掉。

源码范例:

 代码如下 复制代码

<?php

//需开启配置 php_zip.dll

//phpinfo();

header("Content-type:text/html;charset=utf-8");

function get_zip_originalsize($filename, $path) {

//先判断待解压的文件是否存在

if(!file_exists($filename)){

die("文件 $filename 不存在!");

$starttime = explode(' ',microtime()); //解压开始的时间

//将文件名和路径转成windows系统默认的gb2312编码,否则将会读取不到

$filename = iconv("utf-8","gb2312",$filename);

$path = iconv("utf-8","gb2312",$path);

//打开压缩包

$resource = zip_open($filename);

$i = 1;

//遍历读取压缩包里面的一个个文件

while ($dir_resource = zip_read($resource)) {

//如果能打开则继续

if (zip_entry_open($resource,$dir_resource)) {

//获取当前项目的名称,即压缩包里面当前对应的文件名

$file_name = $path.zip_entry_name($dir_resource);

//以最后一个“/”分割,再用字符串截取出路径部分

$file_path = substr($file_name,0,strrpos($file_name, "/"));

//如果路径不存在,则创建一个目录,true表示可以创建多级目录

if(!is_dir($file_path)){

mkdir($file_path,0777,true);

}

//如果不是目录,则写入文件

if(!is_dir($file_name)){

//读取这个文件

$file_size = zip_entry_filesize($dir_resource);

//最大读取6M,如果文件过大,跳过解压,继续下一个

if($file_size<(1024*1024*6)){

$file_content = zip_entry_read($dir_resource,$file_size);

file_put_contents($file_name,$file_content);

}else{ www.111cn.net

echo "<p> ".$i++." 此文件已被跳过,原因:文件过大, -> ".iconv("gb2312","utf-8",$file_name)." </p>";

}

}

//关闭当前

zip_entry_close($dir_resource);

}

}

//关闭压缩包

zip_close($resource); 

$endtime = explode(' ',microtime()); //解压结束的时间

$thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);

$thistime = round($thistime,3); //保留3为小数

echo "<p>解压完毕!,本次解压花费:$thistime 秒。</p>";

}

$size = get_zip_originalsize('20131101.zip','1代潇瑞/');

?>

测试解压了一个300多KB的小文件,花了0.115秒,测试解压了一个30多MB的(网页文件,小文件比较多),花了20多秒。

php解压程序

跟系统比起来确实慢了一些,但是这也很不错了!刚刚入门,代码还不优良,但是实现了解压,而且代码也比网上的简介易懂,如果你看到这篇文章,相信对你是有帮助的!程序中用到了程序运行的时间,具体可以看看: 。

最后,我觉得:

 代码如下 复制代码

    //最大读取6M,如果文件过大,跳过解压,继续下一个

    if($file_size<(1024*1024*6)){

        $file_content = zip_entry_read($dir_resource,$file_size);

        file_put_contents($file_name,$file_content);

    }

这一块做的不太好,这样对大文件解压就没办法了,等会再优化一下。

时间: 2024-10-26 07:19:35

php中解压压缩文件实例源码的相关文章

PHP中解压RAR文件

  php基础:PHP中解压RAR文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-

如何解压压缩文件

网上下载的photoshop一般都是被压缩的,需要进行解压缩才能安装.以下讲述解压缩软件的安装及解压方法. 安装方法 1.下载解压软件,本教程采用winrar解压文件软件,点击进入下载页面. 2.点击下载后,双击下载文件出现如下图. 3.点击安装--确定--完成.安装完毕. 解压方法 1.双击要解压的软件,出现如下图所示,点击解压到. 2.点击解压到--确定--稍等片刻后解压完毕. 3.在解压文件的目录,出现了一个和解压文件一样名字的文件夹,你要的文件就都在这里了.           最快捷的

php在线解压ZIP文件实例代码

最后还是让我找到了解决的方法,就是通过PHP的程序执行函数来实现这个功能,因为现在能解ZIP文件的东西实在是太多啦(你要是不信,可以到有下载软件的地方找找看,保准你不会失望的,我的话不会错呦). 下面就是该程序的原文件: #upload.php教程  代码如下 复制代码 <table border="0" > <form ENCTYPE="multipart/form-data" action="ups教程ave.php" me

xml-Ant脚本怎么解压rar文件?

问题描述 Ant脚本怎么解压rar文件? xml中使用 标签怎么实现,我写了一个,怎么无法执行 解决方案 Java代码中解压RAR文件linux下解压rar文件linux操作系统下怎样解压rar文件

vs2015的msdn按照教程下载并解压到文件夹,但是在帮助查看器中还是没有内容?

问题描述 vs2015的msdn按照教程下载并解压到文件夹,但是在帮助查看器中还是没有内容?求助啊http://jingyan.baidu.com/article/fdffd1f8364f36f3e98ca1f1.html这个是我根据的方法 解决方案 解决方案二:安装源选择联机,然后下面列表勾选添加.让它下载

Ubuntu系统中如何创建或解压rar文件?

RAR文件的扩展名是.rar,MIME类型是application/x-rar-compressed. 同样是无损数据压缩,RAR文件通常比ZIP文件压缩比要高,但是压缩速度较慢.因为RAR文件头也要占据一定空间,在数据压缩余地不大时,压缩过的文件可能比原文件要大.RAR的一个主要优点是可以把文件压缩目标分割到多个文件,并且很容易从这样的分割的压缩文件解压出源文件. 另外,RAR也支持紧缩格式,把所有文件压缩到同一个数据区以加大压缩比,代价是解压一个单独的文件时必须解压其前面的所有文件.新的RA

PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题

    在项目中要用ZipArchive解压ZIP文件,起初测试环境在WINDOWS平台中,测试通过,换到 LINUX+nginx 的环境中时 就出问题了(ZIP包中有文件和文件夹一共3百多个文件,大部分是带汉字的文件名),问题的现象是:不带汉字的文件解压没有问题,另外有部分带汉字和数字字母的文件解压没有问题,然后其他纯文字的文件名就丢失了,也没有报错,最后把问题定位到了extractTo()方法,这个方法尼玛是个封装的方法,看不到实际的源代码.       但是,发现 for($i = 0;

大文件(1g左右)-压缩、解压 大文件 C#

问题描述 压缩.解压 大文件 C# 如何用c#写一个压缩.解压的文件 文件大小为1G左右.我用 ICSharpCode.SharpZipLib.Zip;这个组件,只能实现小文件的压缩,不能实现大文件的压缩,一压缩就报错.哪位有什么好的方法实现大文件压缩呢. 解决方案 C# 文件压缩与解压c#解压.压缩文件C#下文件的压缩与解压

qq邮箱-解压后文件和压缩前的文件不一样

问题描述 解压后文件和压缩前的文件不一样 大神你好: 我遇到的问题是这样的:给QQ邮箱发一个压缩文件,下载后发现文件变小很多,解压后发现根本不是压缩前的文件,而是别的内容(不是乱码),这是什么原因呢? 解决方案 C++ zip文件的解压与压缩android 压缩解压文件通过程序压缩/解压文件 解决方案二: 应该是你的网络问题 有过滤 导致