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

 更新时间:2014年04月17日 10:02:38   作者:  
这篇文章主要介绍了php文件服务实现虚拟挂载其他目录示例,需要的朋友可以参考下

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

复制代码 代码如下:

<?php
function base64url_encode($data) {
  return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data) {
  return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
function array_verify($var)
  {
   return isset($var)&&is_array($var) && count($var)>0;
  }
  function format_file_size($var)
  {
   if($var<1024) return $var.' B';
   if($var<1048576) return ($var/1024.0).' K';
   if($var<1073741824) return ($var/1048576.0).' M';
   return ($var/1073741824.0).' G';
  }

  $dir="F:";//不以/结尾
  $path="";

 if(array_verify($_GET)&&isset($_GET["path"]))
 {
  $path=base64url_decode($_GET["path"]);
  preg_match("#^[^/].*$|^.*\.$|^\..*$|\./\.|/\.|\./#",$path,$temp);
    if(array_verify($temp))
   {
    echo
      '<html>
               <head>
               <meta http-equiv="content-type" content="text/html;charset=gb2312" />
               <body>';
           echo "警告 index.php?path=".$_GET["path"]." 非法url<br/></body></html>";
     exit;
      }
 $path=preg_replace("#[/\/]{2,}#","/",$path);
 }

if(is_dir($dir.$path))
    {
 echo '<html>
          <head>
          <meta http-equiv="content-type" content="text/html;charset=gb2312" />
          <body>';
 echo "目录   <b>".$path."</b><br/><br/>";

 $dir_res=opendir($dir.$path);
 while($filen=readdir($dir_res))
     {
      if($filen!='.'&&$filen!='..')
      {
          if(is_file($dir.$path.'/'.$filen))
          {
               echo '<a href="index.php?path='.base64url_encode($path.'/'.$filen).'" >'.$filen.'</a> ('.format_file_size(filesize($dir.$path.'/'.$filen)).")<br/>\n";
             }else
           {
                echo '<a href="index.php?path='.base64url_encode($path.'/'.$filen).'" >'.$filen."</a><br/>\n";
           }

         }else if($filen=='..')
             {
               preg_match("#([^/]+/{1})*[^/]+(?=/)#",$path,$parent);
            if(array_verify($parent))
               {
                       echo '<a href="index.php?path='.base64url_encode('/'.$parent[0]).'" >'.$filen."</a><br/>\n";
                  }else
          {
                        echo '<a href="index.php?path='.base64url_encode('/').'" >'.$filen."</a><br/>\n";
                   }
          }
     }
 echo '</body>
         </html>';
 }
    else if(is_file($dir.$path))
        {
                $file_size = filesize($dir.$path);
                header("Content-type: application/octet-stream");
                header("Accept-Ranges: bytes");
                header("Accept-Length: ".$file_size);
                Header("Content-Disposition: attachment; filename=".basename($dir.$path));
                readfile($dir.$path);//大文件请选择其他方式
           }else
            echo "警告:非法访问!";

?>

相关文章

  • yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析

    yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析

    这篇文章主要介绍了yii2框架中使用下拉菜单的自动搜索yii-widget-select2的方法,介绍了yii-widget-select2的下载,安装及具体使用技巧,需要的朋友可以参考下
    2016-01-01
  • PHP中cookie和session的区别实例分析

    PHP中cookie和session的区别实例分析

    这篇文章主要介绍了PHP中cookie和session的区别,比较详尽的分析了二者从创建、运用到清除的各个流程的注意事项,需要的朋友可以参考下
    2014-08-08
  • Laravel框架源码解析之反射的使用详解

    Laravel框架源码解析之反射的使用详解

    这篇文章主要介绍了Laravel框架源码解析之反射的使用,结合实例形式详细分析了Laravel源码解析中反射的基本原理、使用方法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • 跟我学Laravel之请求(Request)的生命周期

    跟我学Laravel之请求(Request)的生命周期

    这篇文档包含了关于请求生命周期的高层次概述,以及启动文件和应用程序事件的相关内容。是篇非常不错的文章,有需要的朋友可以参考下
    2014-10-10
  • php中hashtable实现示例分享

    php中hashtable实现示例分享

    对php内核有一定了解的人应该都知道php的精髓就是HashTable,这篇文章主要介绍了php中hashtable实现示例,需要的朋友可以参考下
    2014-02-02
  • php下拉选项的批量操作的实现代码

    php下拉选项的批量操作的实现代码

    这篇文章介绍了php下拉选项的批量操作的实现代码,有需要的朋友可以参考一下
    2013-10-10
  • php加密解密实用类分享

    php加密解密实用类分享

    加密和解密是一项常规任务,这里介绍一个加解密类。如果你想在用户忘记密码时为他或她找回原来的密码,那么这个类是个好用的工具
    2014-01-01
  • 分享8个Laravel模型时间戳使用技巧小结

    分享8个Laravel模型时间戳使用技巧小结

    这篇文章主要介绍了分享8个Laravel模型时间戳使用技巧小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • ThinkPHP视图查询详解

    ThinkPHP视图查询详解

    这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下
    2014-06-06
  • ThinkPHP框架安全实现分析

    ThinkPHP框架安全实现分析

    这篇文章主要针对ThinkPHP框架安全实现进行深入分析,ThinkPHP框架是国内比较流行的PHP框架之一,感兴趣的小伙伴们可以参考一下
    2016-03-03

最新评论