Board logo

标题: php 在线打包工具 支持子目录(会提示超时,压缩不成功) [打印本页]

作者: shillan    时间: 2015-5-21 11:21     标题: php 在线打包工具 支持子目录(会提示超时,压缩不成功)

用php实现的在线打包的工具,并可以支持子目录使用纯php对目录和文件进行打包压缩,压缩当然不能跟winrar比(压缩比差不多相当于winrar压缩时的最快模式)。
程序使用了php的zip扩展,如果服务器支持,那就可以用了^_^,生成的zip压缩包可以用winrar等来解压的,当然也可以用php来解压。解压的过段时间再发布了。
  1. <?php     
  2. $button=$_POST['button'];     
  3. if($button=="开始打包")     
  4. {     
  5.     $zip = new ZipArchive();     
  6.     $filename = "./".date("Y-m-d")."_".md5(time())."_jackfeng.zip";     
  7.     if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {     
  8.         exit("无法创建 <$filename>\n");     
  9.         }     
  10.     $files = listdir();     
  11.     foreach($files as $path)     
  12.     {     
  13.         $zip->addFile($path,str_replace("./","",str_replace("\\","/",$path)));   
  14.     }   
  15.     echo "压缩完成,共压缩了: " . $zip->numFiles . "个文件\n";   
  16.     $zip->close();   
  17. }   
  18. Function listdir($start_dir='.') {   
  19.   $files = array();   
  20.   if (is_dir($start_dir)) {   
  21.    $fh = opendir($start_dir);   
  22.    while (($file = readdir($fh)) !== false) {   
  23.      if (strcmp($file, '.')==0 || strcmp($file, '..')==0) continue;   
  24.      $filepath = $start_dir . '/' . $file;   
  25.      if ( is_dir($filepath) )   
  26.        $files = array_merge($files, listdir($filepath));   
  27.      else   
  28.        array_push($files, $filepath);   
  29.    }   
  30.    closedir($fh);   
  31.   } else {   
  32.    $files = false;   
  33.   }   
  34. return $files;   
  35. }   
  36. ?>   
  37. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >     
  38. <html>     
  39.     <head>     
  40.         <title>在线打包工具</title>     
  41.         <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   
  42.     </head>   
  43.     <body>   
  44.         <form name="form1" method="post" action="">   
  45.             <hr size="1">   
  46.             <h3><a href="?">在线打包工具</a></h3>   
  47.             <P> <input type="submit" name="button" value="开始打包" /></P>     
  48.             <P>说明:点开始打包,之后,就是耐心等待打包完成了,根据网站文件多少,需要的时间可能会很长。打包完成之后,压缩包会存放在要打包的站点目录下,以<span style='color:red;'>打包时间+不定长随机字符串+jackfeng.zip</span>这样命名,请登陆ftp后下载。</P>     
  49.         </form>     
  50.     </body>     
  51. </html>
复制代码





欢迎光临 逐梦论坛 (http://temp2023.zhumeng.org/) Powered by Discuz! 7.2