php 文件在线解压代码

public function ExtractFile($header,$to,$zip) {
  $header = $this->readfileheader($zip);

  if (substr($to,-1)!="/") $to.="/";
  if ($to=='./') $to = '';
  $pth = explode("/",$to.$header['filename']);
  $mydir = '';
  for($i=0;$i<count($pth)-1;$i++) {
   if (!$pth[$i]) continue;
   $mydir .= $pth[$i]."/";
   if ((!is_dir($mydir) && @mkdir($mydir,0777)) || (($mydir==$to.$header['filename'] || ($mydir==$to && $this->total_folders==0)) && is_dir($mydir)) ) {
    @chmod($mydir,0777);
    $this->total_folders ++;
    echo 'Extract : ',$mydir,'<br>';
   }
  }

  if (strrchr($header['filename'],'/')=='/') return;
  if (!($header['external']==0x41FF0010)&&!($header['external']==16)) {
   if ($header['compression']==0) {
    $fp = @fopen($to.$header['filename'], 'wb');
    if (!$fp) return(-1);
    $size = $header['compressed_size'];
    while ($size != 0) {
     $read_size = ($size < 2048 ? $size : 2048);
     $buffer = fread($zip, $read_size);
     $binary_data = pack('a'.$read_size, $buffer);
     @fwrite($fp, $binary_data, $read_size);
     $size -= $read_size;
    }
    fclose($fp);
    touch($to.$header['filename'], $header['mtime']);
   } else {
    $fp = @fopen($to.$header['filename'].'.gz','wb');
    if (!$fp) return(-1);
    $binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($header['compression']),
    Chr(0x00), time(), Chr(0x00), Chr(3));

    fwrite($fp, $binary_data, 10);
    $size = $header['compressed_size'];

    while ($size != 0) {
     $read_size = ($size < 1024 ? $size : 1024);
     $buffer = fread($zip, $read_size);
     $binary_data = pack('a'.$read_size, $buffer);
     @fwrite($fp, $binary_data, $read_size);
     $size -= $read_size;
    }

    $binary_data = pack('VV', $header['crc'], $header['size']);
    fwrite($fp, $binary_data,8); fclose($fp);

    $gzp = @gzopen($to.$header['filename'].'.gz','rb') or die("Cette archive est compress

时间: 2024-09-20 10:55:32

php 文件在线解压代码的相关文章

php实现文件在线解压

<?php //验证密码 $password = "123456"; ?> <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Faisun_unzip - 纯粹空间 - www.softpure.com</title> <style type=&

php解压文件代码实现php在线解压

 这篇文章主要介绍了php解压文件代码,根据这个代码可以实现php在线解压功能,需要的朋友可以参考下  代码如下: <?php $zip = zip_open("moooredale.zip");   if ($zip) {    while ($zip_entry = zip_read($zip)) {    $fp = fopen(zip_entry_name($zip_entry), "w");    if (zip_entry_open($zip, $

php在线解压ZIP文件的方法

这篇文章主要介绍了php在线解压ZIP文件的方法,包含了较为完整的上传与zip解压功能,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了php在线解压ZIP文件的方法.分享给大家供大家参考.具体分析如下: 在PHP的函数库中只找到了个ZLIB的函数还跟压缩有点关系,但是使我失望的是他没能解ZIP的文件,但最后还是让我找到了解决的方法,就是通过PHP的程序执行函数来实现这个功能,因为现在能解ZIP文件的东西实在是太多啦,你要是不信,可以到有下载软件的地方找找看,保准你不会失望的,我的

mdb文件怎么解压

mdb文件怎么解压?不知道大家有没有接触过,现在在网上有一种mdb格式的的压缩格式,具体叫什么也不清楚.但是解压这样的文件,用常用的rar解压软件是无法解开的,那么mdb文件怎么解压呢? 相信大家都知道,mdb文件是是数据库文件,有网友在百度知道上提问mdb文件怎么解压很多人回复mdb不用解压,用Access打开就可以了.但相信真正提问的用户肯定对这样的答案不会满意的. 其实mdb压缩文件多见于木马的打包,通常是用这种形式把网站所有内容包括图片整体打包,有的为HSH.mdb有的可能是Packet

虚拟主机RAR在线解压和在线压缩

虚拟主机RAR在线解压有什么好处:可以大幅度的减少上传时间,可以确保资料的完整性(比如您的网站有几百到几千个文件,您不可能用FTP完整的传上去,那么多文件传漏或传断线那都是很正常的事情),如果把您的站点打包成RAR文件 那么传一个RAR文件,就完全可以保证资料一个都不少. 1.把您的网站打包成RAR文件(比如abc.rar),传到FTP的DB文件夹 2.使用您的用户名和密码登陆本站(按照以下步骤点击) 3.自助管理--主机管理--操作下的管理 --[网站打包/还原]--"网站还原"--

linux文件夹与文件压缩/解压命令

语法:gzip [选项] 压缩(解压缩)的文件名该命令的各选项含义如下: -c 将输出写到标准输出上,并保留原有文件.-d 将压缩文件解压.-l 对每个压缩文件,显示下列字段:     压缩文件的大小:未压缩文件的大小:压缩比:未压缩文件的名字-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩.-t 测试,检查压缩文件是否完整.-v 对每一个压缩和解压的文件,显示文件名和压缩比.-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),-9 或

Android实现下载zip压缩文件并解压的方法(附源码)

前言 其实在网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,所以这篇文章在此记录一下下载zip文件并直接解压的方法,直接上代码,文末有源码下载. 下载: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream

不可预料的压缩文件末端解压出错解决方法

"不可预料的压缩文件末端"多出现于压缩文件未下载完成,由于服务器失去响应,导致系统误以为文件已经下载完毕,将不完整的文件当成了完整的.建议把文件删除了重新下载,如果始终有问题则是资源的问题.不可预料的压缩文件末端解压出错的解决办法如下: 第一步:下载安装"Advanced RAR Repair"程序. 第二步:下载解压缩后,双击打开"Advanced RAR Repair"程序. 第三步:在"选择RAR或自解压文档进行修复"项

服务器-c# 解压文件的 解压之后没有存进数据库 没有看的解压之后 文件

问题描述 c# 解压文件的 解压之后没有存进数据库 没有看的解压之后 文件 Stream stream = HttpContext.Current.Request.InputStream; account = HttpContext.Current.Request.Params["Account"]; if (account == null || account == "") { account = "unknown"; } desZipFile