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 相关文章推荐
php session应用实例 登录验证
Mar 16 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
一个比较简单的PHP 分页分组类
Dec 10 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
mac下安装nginx和php
Nov 04 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
twig里使用js变量的方法
Feb 05 PHP
php好代码风格的阶段性总结
Jun 25 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 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
php将数据库导出成excel的方法
2010/05/07 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
原生js实现购物车
2020/09/23 Javascript
python 爬取学信网登录页面的例子
2019/08/13 Python
Python标准库itertools的使用方法
2020/01/17 Python
Python 如何在字符串中插入变量
2020/08/01 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
五一服装活动方案
2014/01/11 职场文书
日语专业求职信
2014/07/04 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
Go语言读取txt文档的操作方法
2022/01/22 Golang
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
MySQL详细讲解变量variables的用法
2022/06/21 MySQL