Home > php教程 > php手册 > body text

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

WBOY
Release: 2016-06-13 11:23:42
Original
1558 people have browsed it

注明这款php教程文件压缩代码他要借助于zip.exe文件哦,所以我们要把zip.exe压缩文件给拿出来哦。

if ( !IsSet($_GET['dirname']) )
{
 show_input_form() ;
}
else
{
 // check if empty
 if ( empty($_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 "

n"
  . "请输入要打包的文件夹,注意,仅当前目录下的文件夹才可以下载!

n"
  . "n"
  . "n"
  . "

n" ;
 echo "<script>n"<br /> . "input.dirname.focus();n"<br /> . "function show_download_link(dir)n"<br /> . "{"<br /> . " var top = (screen.height-200)/2 ;n"<br /> . " var left = (screen.width-300)/2 ;n"<br /> . " newwin=window.open('', '', 'width=300,height=200,top=' + top + ',left=' + left + ', resizable=0,scrollbars=auto');n"<br /> . " url = "{$_SERVER['PHP_SELF']}" + "?dirname=" + dir ;n"<br /> . " newwin.document.write('<a href=' + url + '>点击此链接下载,<br>或者右键点击此处选择"另存为"');n"<br /> . "}"<br /> . "</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 "

" . $str . "
" ;
 echo HtmlFoot() ;
 exit ;
}


function HtmlHead($title)
{
 return "nn

n"
  . "n"
  . "
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template