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


Posted in PHP onApril 17, 2014

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 "警告:非法访问!";
?>
PHP 相关文章推荐
function.inc.php超越php
Dec 09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
Apr 03 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
解析php中的escape函数
Jun 29 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
php实现12306余票查询、价格查询示例
Apr 17 #PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 #PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 #PHP
通过dbi使用perl连接mysql数据库的方法
Apr 16 #PHP
php sybase_fetch_array使用方法
Apr 15 #PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 #PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 #PHP
You might like
yii操作session实例简介
2014/07/31 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
一些不错的js函数ajax
2008/08/20 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
详解vue中axios的封装
2018/07/18 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
利用python修改json文件的value方法
2018/12/31 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
捐款倡议书
2014/04/14 职场文书
干部鉴定材料
2014/05/18 职场文书
宣传活动总结范文
2014/07/01 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
超强台风观后感
2015/06/09 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers