当前位置:首页 > PHP教程 > php高级应用 > 列表

php文件服务实现虚拟挂载其他目录示例

发布:smiling 来源: PHP粉丝网  添加日期:2020-11-15 20:03:37 浏览: 评论:0 

这篇文章主要介绍了php文件服务实现虚拟挂载其他目录示例,需要的朋友可以参考下,php文件服务实现虚拟挂载其他目录,代码如下:

  1. <?php 
  2. function base64url_encode($data) {  
  3.   return rtrim(strtr(base64_encode($data), '+/''-_'), '=');  
  4. }  
  5. function base64url_decode($data) {  
  6.   return base64_decode(str_pad(strtr($data'-_''+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));  
  7. function array_verify($var
  8.   { 
  9.    return isset($var)&&is_array($var) && count($var)>0; 
  10.   } 
  11.   function format_file_size($var
  12.   { 
  13.    if($var<1024) return $var.' B'
  14.    if($var<1048576) return ($var/1024.0).' K'
  15.    if($var<1073741824) return ($var/1048576.0).' M'
  16.    return ($var/1073741824.0).' G'
  17.   } 
  18.  
  19.   $dir="F:";//不以/结尾 
  20.   $path=""
  21.  
  22.  if(array_verify($_GET)&&isset($_GET["path"])) 
  23.  { 
  24.   $path=base64url_decode($_GET["path"]); 
  25.   preg_match("#^[^/].*$|^.*\.$|^\..*$|\./\.|/\.|\./#",$path,$temp); 
  26.     if(array_verify($temp)) 
  27.    { 
  28.     echo 
  29.       '<html> 
  30.                <head> 
  31.                <meta http-equiv="content-type" content="text/html;charset=gb2312" /> 
  32.                <body>'; 
  33.            echo "警告 index.php?path=".$_GET["path"]." 非法url<br/></body></html>"
  34.      exit
  35.       } 
  36.  $path=preg_replace("#[/\/]{2,}#","/",$path); 
  37.  } 
  38.  
  39. if(is_dir($dir.$path)) 
  40.     { 
  41.  echo '<html> 
  42.           <head> 
  43.           <meta http-equiv="content-type" content="text/html;charset=gb2312" /> 
  44.           <body>'; 
  45.  echo "目录   <b>".$path."</b><br/><br/>"
  46.  
  47.  $dir_res=opendir($dir.$path); 
  48.  while($filen=readdir($dir_res)) 
  49.      { 
  50.       if($filen!='.'&&$filen!='..'
  51.       { 
  52.           if(is_file($dir.$path.'/'.$filen)) 
  53.           { 
  54.                echo '<a href="index.php?path='.base64url_encode($path.'/'.$filen).'" >'.$filen.'</a> ('.format_file_size(filesize($dir.$path.'/'.$filen)).")<br/>\n"
  55.              }else 
  56.            { 
  57.                 echo '<a href="index.php?path='.base64url_encode($path.'/'.$filen).'" >'.$filen."</a><br/>\n"
  58.            } 
  59.  
  60.          }else if($filen=='..'
  61.              { 
  62.                preg_match("#([^/]+/{1})*[^/]+(?=/)#",$path,$parent); 
  63.             if(array_verify($parent)) 
  64.                { 
  65.                        echo '<a href="index.php?path='.base64url_encode('/'.$parent[0]).'" >'.$filen."</a><br/>\n"
  66.                   }else 
  67.           { 
  68.                         echo '<a href="index.php?path='.base64url_encode('/').'" >'.$filen."</a><br/>\n"
  69.                    } 
  70.           } 
  71.      } 
  72.  echo '</body> 
  73.          </html>'; 
  74.  } 
  75.     else if(is_file($dir.$path)) 
  76.         { 
  77.                 $file_size = filesize($dir.$path); 
  78.                 header("Content-type: application/octet-stream"); 
  79.                 header("Accept-Ranges: bytes"); 
  80.                 header("Accept-Length: ".$file_size); 
  81.                 Header("Content-Disposition: attachment; filename=".basename($dir.$path));  
  82.                 readfile($dir.$path);//大文件请选择其他方式 
  83.            }else 
  84.             echo "警告:非法访问!"
  85.  
  86. ?> 

Tags: php文件服务 php虚拟挂载

分享到: