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 相关文章推荐
用libTemplate实现静态网页的生成
Oct 09 PHP
输出控制类
Oct 09 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
织梦sitemap地图实时推送给百度的教程
Aug 03 PHP
php实现生成验证码实例分享
Apr 10 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 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
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
php DES加密算法实例分析
2019/09/18 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
浅析Python 中整型对象存储的位置
2016/05/16 Python
pyenv命令管理多个Python版本
2017/03/26 Python
Apache如何部署django项目
2017/05/21 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
pytest中文文档之编写断言
2019/09/12 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
Python 爬虫的原理
2020/07/30 Python
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
日期和时间问题
2015/01/04 面试题
传媒专业推荐信范文
2013/11/23 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
盗窃案辩护词
2015/05/21 职场文书
安全教育观后感
2015/06/17 职场文书
欢送会主持词
2015/07/01 职场文书
驻村工作简报
2015/07/20 职场文书
课程设计感想范文
2015/08/11 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python