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.ini中文版(2)
Oct 09 PHP
关于mysql 字段的那个点为是定界符
Jan 15 PHP
php 验证码制作(网树注释思想)
Jul 20 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
基于PHP制作验证码
Oct 12 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python中Collection的使用小技巧
2014/08/18 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
python重要函数eval多种用法解析
2020/01/14 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
Python识别验证码的实现示例
2020/09/30 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
旷课检讨书1000字
2014/02/14 职场文书
小学生常见病防治方案
2014/06/06 职场文书
合作协议书范文
2014/08/20 职场文书
通知格式
2015/04/27 职场文书
门球健将观后感
2015/06/16 职场文书