当前位置:首页 > PHP教程 > php文件操作 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-09 16:08:24 浏览: 评论:0 

注明这款php文件压缩代码他要借助于zip.exe文件,所以我们要把zip.exe压缩文件给拿出来,实例代码如下:

  1. <?php 
  2.  
  3. if ( !IsSet($_GET['dirname']) ) 
  4.  show_input_form() ; 
  5. else 
  6.  // check if empty 
  7.  if ( emptyempty($_GET['dirname']) ) 
  8.  { 
  9.   hg_exit("请输入文件夹名!") ; 
  10.  } 
  11.  
  12.  // check valid dirname 
  13.  if ( FALSE !== strpos($_GET['dirname'], "/") ) 
  14.  { 
  15.   hg_exit(""/" 是非法的文件夹名!") ; 
  16.  } 
  17.  if ( FALSE !== strstr($_GET['dirname'], "..") ) 
  18.  { 
  19.   hg_exit("".." 是非法的文件夹名!") ; 
  20.  } 
  21.  
  22.  // check valid dir 
  23.  if ( !is_dir($_GET['dirname']) ) 
  24.  { 
  25.   hg_exit(""{$_GET['dirname']}" 不是一个有效的文件夹!") ; 
  26.  } 
  27.  
  28.  $szData = "" ; 
  29.  $szInfo = "" ; 
  30.  
  31.  $file_count = @ZipDir($_GET['dirname'], &$szData, &$szInfo) ; 
  32.  $info_size_16byte = @sprintf("%016d", @strlen($szInfo)) ; 
  33.  $szData = @sprintf("%016d",$file_count) . $info_size_16byte . $szInfo . $szData ; 
  34.  $filename = $_GET['dirname'] . ".dat" ; 
  35.  if ( function_exists(gzencode) ) 
  36.  { 
  37.   $szData = gzencode($szData) ; 
  38.   $filename .= ".gz" ; 
  39.  } 
  40.  
  41.  Header("Content-type: application/octet-stream"); 
  42.  Header("Accept-Ranges: bytes"); 
  43.  Header("Accept-Length: " . strlen($szData)); 
  44.  Header("Content-Disposition: attachment; filename=$filename"); 
  45.  
  46.  echo $szData ; 
  47.  
  48.  
  49. function show_input_form() 
  50.  echo HtmlHead("文件打包") ; 
  51.  echo "<form name="input">n" 
  52.   . "请输入要打包的文件夹,注意,仅当前目录下的文件夹才可以下载!<p>n" 
  53.   . "<input name="dirname">n" 
  54.   . "<input type="button" value="确定" onClick="show_download_link(dirname.value);">n" 
  55.   . "</form>n" ; 
  56.  echo "<script>n" 
  57.   . "input.dirname.focus();n" 
  58.   . "function show_download_link(dir)n" 
  59.   . "{" 
  60.   . "   var top = (screen.height-200)/2 ;n" 
  61.   . "   var left = (screen.width-300)/2 ;n" 
  62.   . "   newwin=window.open('', '', 'width=300,height=200,top=' + top + ',left=' + left + ', resizable=0,scrollbars=auto');n" 
  63.   . "   url = "{$_SERVER['PHP_SELF']}" + "?dirname=" + dir ;n" 
  64.   . "   newwin.document.write('<a href=' + url + '>点击此链接下载,<br>或者右键点击此处选择"另存为"</a>');n" 
  65.   . "}" 
  66.   . "</script>n" ; 
  67.  echo HtmlFoot() ; 
  68.  
  69.  
  70. function ZipDir($szDirName, &$szData, &$szInfo
  71.  // write dir header 
  72.  $szInfo .= "$szDirName|[dir]n" ; 
  73.  $file_count = 0 ; 
  74.  $hDir = OpenDir($szDirName) ; 
  75.  while ( $file = ReadDir($hDir) ) 
  76.  { 
  77.   if ( $file=="." || $file==".." ) continue ; 
  78.  
  79.   $szCurFile = "$szDirName/$file" ; 
  80.  
  81.   if ( Is_Dir($szCurFile) ) 
  82.   { 
  83.    $file_count += ZipDir($szCurFile, &$szData, &$szInfo) ; 
  84.   } 
  85.   else if ( Is_File($szCurFile) ) 
  86.   { 
  87.    $hCurFile = fopen($szCurFile"rb") ; 
  88.    $size = filesize($szCurFile) ; 
  89.    $szStream = fread$hCurFile$size ) ; 
  90.    fclose($hCurFile) ; 
  91.    $file_count++ ; 
  92.  
  93.    // write info 
  94.    $szInfo .= "$szCurFile|$sizen" ; 
  95.  
  96.    // write data 
  97.    $szData .= $szStream ; 
  98.   } 
  99.  } 
  100.  
  101.  // write dir footer 
  102.  $szInfo .= "$szDirName|[/dir]n" ; 
  103.  return $file_count ; 
  104.  
  105.  
  106. function hg_exit($str
  107.  echo HtmlHead("Error, exit!") ; 
  108.  echo "<h5>" . $str . "</h5>" ; 
  109.  echo HtmlFoot() ; 
  110.  exit ; 
  111.  
  112.  
  113. function HtmlHead($title
  114.  return "<html>nn<head>n" 
  115.   . "<meta http-equiv="Content-Type" content="text/html; charset=gb2312">n" 
  116.   . "<style type="text/css教程">n" 
  117.   . "body,input,td{font:12px verdana}n" 
  118.   . "</style>n" 
  119.   . "</head>nn<body>nn" ; 
  120.  
  121.  
  122. function HtmlFoot() 
  123.  return Copyright() . "n</body>nn</html>" ; 
  124.  
  125.  
  126. function Copyright() 
  127.  return "<center><font size="5" face="楷体_GB2312" color="red">使用完请立即删除本文件,以避免被其它人发现使用!</font></center>n" 
  128.   . "<br><hr color="#003388">n" 
  129.   . "<center>n" 
  130.   . "<p style="font-family:verdana; font-size:12px">Contact us: n" 
  131.   . "<a href="http://www.phpfensi.com/" target="_blank">http://www.phpfensi.com/</a></p>n" 
  132.   . "</center>n" 
  133.   . "</body>n" 
  134.   . "n" 
  135.   . "</html>" ; 
  136.  
  137. ?>

Tags: php在线压缩 php文件夹压缩

分享到: