加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php在线文件与文件夹压缩实例代码

发布时间:2022-09-19 04:44:55 所属栏目:PHP教程 来源:互联网
导读:注明这款php文件压缩代码他要借助于zip.exe文件,所以我们要把zip.exe压缩文件给拿出来,实例代码如下: ?php if ( !IsSet($_GET[dirname]) ) { show_input_form() ; } else { // check if empty if ( emptyempty($_GET[dirname]) ) { hg_exit(请输入文件夹名!)
  注明这款php文件压缩代码他要借助于zip.exe文件,所以我们要把zip.exe压缩文件给拿出来,实例代码如下:
 
  <?php
   
  if ( !IsSet($_GET['dirname']) )
  {
   show_input_form() ;
  }
  else
  {
   // check if empty
   if ( emptyempty($_GET['dirname']) )
   {
    hg_exit("请输入文件夹名!") ;
   }
   
   // check valid dirname
   if ( FALSE !== strpos($_GET['dirname'], "/") )
   {
    hg_exit(""/" 是非法的文件夹名!") ;
   }
   if ( FALSE !== strstr($_GET['dirname'], "..") )
   {
    hg_exit("".." 是非法的文件夹名!") ;
   }
   
   // check valid dir
   if ( !is_dir($_GET['dirname']) )
   {
    hg_exit(""{$_GET['dirname']}" 不是一个有效的文件夹!") ;
   }
   
   $szData = "" ;
   $szInfo = "" ;
   
   $file_count = @ZipDir($_GET['dirname'], &$szData, &$szInfo) ;
   $info_size_16byte = @sprintf("%016d", @strlen($szInfo)) ;
   $szData = @sprintf("%016d",$file_count) . $info_size_16byte . $szInfo . $szData ;
   $filename = $_GET['dirname'] . ".dat" ;
   if ( function_exists(gzencode) )
   {
    $szData = gzencode($szData) ;
    $filename .= ".gz" ;
   }
   
   Header("Content-type: application/octet-stream");
   Header("Accept-Ranges: bytes");
   Header("Accept-Length: " . strlen($szData));
   Header("Content-Disposition: attachment; filename=$filename");
   
   echo $szData ;
  }
   
   
  function show_input_form()
  {
   echo HtmlHead("文件打包") ;
   echo "<form name="input">n"
    . "请输入要打包的文件夹,注意,仅当前目录下的文件夹才可以下载!<p>n"
    . "<input name="dirname">n"
    . "<input type="button" value="确定" onClick="show_download_link(dirname.value);">n"
    . "</form>n" ;
   echo "<script>n"
    . "input.dirname.focus();n"
    . "function show_download_link(dir)n"
    . "{"
    . "   var top = (screen.height-200)/2 ;n"
    . "   var left = (screen.width-300)/2 ;n"
    . "   newwin=window.open('', '', 'width=300,height=200,top=' + top + ',left=' + left + ', resizable=0,scrollbars=auto');n"
    . "   url = "{$_SERVER['PHP_SELF']}" + "?dirname=" + dir ;n"
    . "   newwin.document.write('<a href=' + url + '>点击此链接下载,<br>或者右键点击此处选择"另存为"</a>');n"
    . "}"
    . "</script>n" ;
   echo HtmlFoot() ;
  }
   
   
  function ZipDir($szDirName, &$szData, &$szInfo)
  {
   // write dir header
   $szInfo .= "$szDirName|[dir]n" ;
   $file_count = 0 ;
   $hDir = OpenDir($szDirName) ;
   while ( $file = ReadDir($hDir) )
   {
    if ( $file=="." || $file==".." ) continue ;
   
    $szCurFile = "$szDirName/$file" ;
   
    if ( Is_Dir($szCurFile) )
    {
     $file_count += ZipDir($szCurFile, &$szData, &$szInfo) ;
    }
    else if ( Is_File($szCurFile) )
    {
     $hCurFile = fopen($szCurFile, "rb") ;
     $size = filesize($szCurFile) ;
     $szStream = fread( $hCurFile, $size ) ;
     fclose($hCurFile) ;
     $file_count++ ;
   
     // write info
     $szInfo .= "$szCurFile|$sizen" ;
   
     // write data
     $szData .= $szStream ;
    }
   }
   
   // write dir footer
   $szInfo .= "$szDirName|[/dir]n" ;
   return $file_count ;
  }
   
   
  function hg_exit($str)
  {
   echo HtmlHead("Error, exit!") ;
   echo "<h5>" . $str . "</h5>" ;
   echo HtmlFoot() ;
   exit ;
  }
   
   
  function HtmlHead($title)
  {
   return "<html>nn<head>n"
    . "<meta http-equiv="Content-Type" content="text/html; charset=gb2312">n"
    . "<style type="text/css教程">n"
    . "body,input,td{font:12px verdana}n"
    . "</style>n"
    . "</head>nn<body>nn" ;
  }
   
   
  function HtmlFoot()
  {
   return Copyright() . "n</body>nn</html>" ;
  }
   
   
  function Copyright()
  {
   return "<center><font size="5" face="楷体_GB2312" color="red">使用完请立即删除本文件,以避免被其它人发现使用!</font></center>n"
    . "<br><hr color="#003388">n"
    . "<center>n"
    . "<p style="font-family:verdana; font-size:12px">Contact us: n"
    . "<a href="http://www.phpfensi.com/" target="_blank">http://www.phpfensi.com/</a></p>n"
    . "</center>n"
    . "</body>n"
    . "n"
    . "</html>" ;
  }
   
  ?>
   

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读