Heim  >  Artikel  >  php教程  >  php在线文件与文件夹压缩实例代码

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

WBOY
WBOYOriginal
2016-06-13 11:23:421554Durchsuche

注明这款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"
  . "
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn