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 相关文章推荐
教你如何把一篇文章按要求分段
Oct 09 PHP
PHP新手上路(七)
Oct 09 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
php简单实现发送带附件的邮件
Jun 10 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
thinkPHP5框架中widget的功能与用法详解
Jun 11 PHP
php实现微信企业转账功能
Oct 02 PHP
php实现文件上传基本验证
Mar 04 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
我的论坛源代码(六)
2006/10/09 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
window.location.hash 使用说明
2010/11/08 Javascript
浅析node.js中close事件
2014/11/26 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
在Python中使用Mako模版库的简单教程
2015/04/08 Python
简单介绍Python中的struct模块
2015/04/28 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
flask框架视图函数用法示例
2018/07/19 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
为什么称python为胶水语言
2020/06/16 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
英文请假条
2014/04/11 职场文书
岗位职责说明书
2014/05/07 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
新教师个人总结
2015/02/06 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
团结主题班会
2015/08/13 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书