当前位置:首页 > 综合实例 > 列表

php开发一个文件管理系统(附代码)

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-23 09:32:03 浏览: 评论:0 

最近接到的一个项目,需要单独管理文件,这就类似于虚拟服务器文件管理系统一样,不需要其它多余的功能,只要能实现简单的文件管理就可以了,然后从网上搜到一个很实用的文件管理系统,如果有需要的可以直接粘贴使用,效果图如下:

php开发一个文件管理系统(附代码)

  1. <?php 
  2.  
  3. //读取管理项目,并且展示 
  4.  
  5. require_once 'lib/dir.func.php'
  6.  
  7. require_once 'lib/file.func.php'
  8.  
  9. date_default_timezone_set("PRC"); 
  10.  
  11. error_reporting(E_ALL&~E_NOTICE); 
  12.  
  13. define('WEBROOT','webRoot'); 
  14.  
  15. $path=$_REQUEST['path']?$_REQUEST['path']:WEBROOT; 
  16.  
  17. $act=$_REQUEST['act']?$_REQUEST['act']:''
  18.  
  19. $dirName=$_REQUEST['dirName']?$_REQUEST['dirName']:''
  20.  
  21. $fileName=$_REQUEST['fileName']?$_REQUEST['fileName']:''
  22.  
  23. $info=read_directory($path); 
  24.  
  25. // print_r($info);exit; 
  26.  
  27. if(!is_array($info)){ 
  28.  
  29.   exit("<script> 
  30.  
  31.   alert('读取失败'); 
  32.  
  33.   location.href='index.php'
  34.  
  35.   </script>"); 
  36.  
  37.  
  38. //根据不同请求完成不同操作 
  39.  
  40. switch($act){ 
  41.  
  42.   case 'createDir'
  43.  
  44.   // echo $dirName;exit; 
  45.  
  46.   $res=create_dir($path.DIRECTORY_SEPARATOR.$dirName); 
  47.  
  48.   if($res===true){ 
  49.  
  50.     $result['msg']=basename($dirName).'创建成功'
  51.  
  52.     $result['icon']=1; 
  53.  
  54.   }else
  55.  
  56.     $result['msg']=$res
  57.  
  58.     $result['icon']=2; 
  59.  
  60.   } 
  61.  
  62.   exit(json_encode($result)); 
  63.  
  64.   break
  65.  
  66.   case 'renameDir'
  67.  
  68.   $newName=$path.DIRECTORY_SEPARATOR.$dirName
  69.  
  70.   $res=rename_dir($fileName,$newName); 
  71.  
  72.   if($res===true){ 
  73.  
  74.     $result['msg']=$fileName.'重命名成功'
  75.  
  76.     $result['icon']=1; 
  77.  
  78.   }else
  79.  
  80.     $result['msg']=$res
  81.  
  82.     $result['icon']=2; 
  83.  
  84.   } 
  85.  
  86.   exit(json_encode($result)); 
  87.  
  88.   break
  89.  
  90.   case 'delDir'
  91.  
  92.   $res=del_dir($fileName); 
  93.  
  94.   if($res===true){ 
  95.  
  96.     $result['msg']=basename($fileName).'删除成功'
  97.  
  98.     $result['icon']=1; 
  99.  
  100.   }else
  101.  
  102.     $result['msg']=$res
  103.  
  104.     $result['icon']=2; 
  105.  
  106.   } 
  107.  
  108.   exit(json_encode($result)); 
  109.  
  110.   break
  111.  
  112.   //文件部分 
  113.  
  114.   case 'createFile'
  115.  
  116.   $res=create_file($path.DIRECTORY_SEPARATOR.$fileName); 
  117.  
  118.   if($res===true){ 
  119.  
  120.     $result['msg']=basename($fileName).'文件新建成功'
  121.  
  122.     $result['icon']=1; 
  123.  
  124.   }else
  125.  
  126.     $result['msg']=$res
  127.  
  128.     $result['icon']=2; 
  129.  
  130.   } 
  131.  
  132.   exit(json_encode($result)); 
  133.  
  134.   break
  135.  
  136.   case 'showContents'
  137.  
  138.   $res=show_contents($fileName); 
  139.  
  140.   exit($res); 
  141.  
  142.   break
  143.  
  144. }?><!DOCTYPE html><html lang="zh-cn"
  145.  
  146.   <head> 
  147.  
  148.     <meta charset="utf-8"
  149.  
  150.     <meta http-equiv="X-UA-Compatible" content="IE=edge"
  151.  
  152.     <meta name="viewport" content="width=device-width, initial-scale=1"
  153.  
  154.     <title>WEB在线文件管理器</title> 
  155.  
  156.     <!-- Bootstrap --> 
  157.  
  158.     <link href="css/bootstrap.min.css" rel="stylesheet"
  159.  
  160.  
  161.  
  162.     <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 
  163.  
  164.     <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 
  165.  
  166.     <!--[if lt IE 9]> 
  167.  
  168.       <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script> 
  169.  
  170.       <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> 
  171.  
  172.     <![endif]--> 
  173.  
  174.   </head> 
  175.  
  176.   <body> 
  177.  
  178.     <p class="container"
  179.  
  180.         <p class="row clearfix"
  181.  
  182.             <p class="col-md-12 column"
  183.  
  184.                 <nav class="navbar navbar-default" role="navigation"
  185.  
  186.                     <p class="navbar-header"
  187.  
  188.                          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">切换导航</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button> <a  class="navbar-brand" href="index.php"><span class="glyphicon glyphicon-home"></span>首页</a> 
  189.  
  190.                     </p> 
  191.  
  192.  
  193.  
  194.                     <p class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"
  195.  
  196.                         <ul class="nav navbar-nav"
  197.  
  198.                             <li class="active"
  199.  
  200.                                 <a href="javascript:void(0)" class='createDir' data-url="index.php?act=createDir&path=<?php echo $path;?>"><span class="glyphicon glyphicon-folder-open"></span>新建目录</a> 
  201.  
  202.                             </li> 
  203.  
  204.                             <li> 
  205.  
  206.                   <a href="javascript:void(0)" class="createFile" data-url="index.php?act=createFile&path=<?php echo $path;?>"><span class="glyphicon glyphicon-file"></span>新建文件</a> 
  207.  
  208.                             </li> 
  209.  
  210.                 <li> 
  211.  
  212.                                 <a  href="#"><span class="glyphicon glyphicon-upload"></span>上传文件</a> 
  213.  
  214.                             </li> 
  215.  
  216.                 <li> 
  217.  
  218.                                 <a  href="#"><span class="glyphicon glyphicon-info-sign"></span>系统信息</a> 
  219.  
  220.                             </li> 
  221.  
  222.                                 </ul> 
  223.  
  224.                             </li> 
  225.  
  226.                         </ul> 
  227.  
  228.                         <form class="navbar-form navbar-left" role="search"
  229.  
  230.                             <p class="form-group"
  231.  
  232.                                 <input type="text" class="form-control" /> 
  233.  
  234.                             </p> <button type="submit" class="btn btn-default">搜索</button> 
  235.  
  236.                         </form> 
  237.  
  238.                     </p> 
  239.  
  240.  
  241.  
  242.                 </nav> 
  243.  
  244.                 <p class="jumbotron nofollow"
  245.  
  246.                     <h1> 
  247.  
  248.                         WEB在线文件管理器                    </h1> 
  249.  
  250.                     <p> 
  251.  
  252.               WEB在线文件管理器主要是用于管理项目文件,实现在线编辑、修改、删除等操作。                    </p> 
  253.  
  254.                     <p> 
  255.  
  256.                         <a  class="btn btn-primary btn-large" href="#">查看更多 »</a> 
  257.  
  258.                     </p> 
  259.  
  260.                 </p> 
  261.  
  262.                 <table class="table table-bordered table-hover table-condensed"
  263.  
  264.                     <thead> 
  265.  
  266.                         <tr> 
  267.  
  268.                             <th> 
  269.  
  270.                                 类型                            </th> 
  271.  
  272.                             <th> 
  273.  
  274.                                 名称                            </th> 
  275.  
  276.                             <th> 
  277.  
  278.                                 读/写/执行                            </th> 
  279.  
  280.                             <th> 
  281.  
  282.                                 访问时间                            </th> 
  283.  
  284.                 <th> 
  285.  
  286.                   操作                </th> 
  287.  
  288.                         </tr> 
  289.  
  290.                     </thead> 
  291.  
  292.                     <tbody> 
  293.  
  294.               <!-- 目录部分 --> 
  295.  
  296.               <?php 
  297.  
  298.               if(is_array($info['dir'])){ 
  299.  
  300.                 foreach($info['dir'as $val){              ?> 
  301.  
  302.               <tr class="success"
  303.  
  304.                 <td><span class="glyphicon glyphicon-folder-close"></span></td> 
  305.  
  306.                 <td><?php echo $val['showName'];?></td> 
  307.  
  308.                 <td> 
  309.  
  310.                   <span class="glyphicon <?php echo $val['readable']?'glyphicon-ok':'glyphicon-remove';?>"></span> 
  311.  
  312.                   <span class="glyphicon <?php echo $val['writable']?'glyphicon-ok':'glyphicon-remove';?>"></span> 
  313.  
  314.                   <span class="glyphicon <?php echo $val['executable']?'glyphicon-ok':'glyphicon-remove';?>"></span> 
  315.  
  316.                 </td> 
  317.  
  318.                 <td><?php echo $val['atime'];?></td> 
  319.  
  320.                 <td> 
  321.  
  322.                   <a href="index.php?path=<?php echo $val['fileName'];?>" class='btn btn-primary btn-sm'>打开</a> 
  323.  
  324.                   <a href="javascript:void(0)"  class='btn btn-primary btn-sm renameDir' data-url='index.php?act=renameDir&fileName=<?php echo $val['fileName'];?>&path=<?php echo $path;?>' data-showName='<?php echo $val['showName'];?>'>重命名</a> 
  325.  
  326.                   <a href="#" class='btn btn-primary btn-sm'>剪切</a> 
  327.  
  328.                   <a href="#" class='btn btn-primary btn-sm'>复制</a> 
  329.  
  330.                   <a href="javascript:void(0)" class='btn btn-danger btn-sm delDir' data-url='index.php?act=delDir&fileName=<?php echo $val['fileName'];?>&path=<?php echo $path;?>' data-showName='<?php echo $val['showName'];?>'>删除</a> 
  331.  
  332.                 </td> 
  333.  
  334.               </tr> 
  335.  
  336.               <?php 
  337.  
  338.                 } 
  339.  
  340.               }              ?> 
  341.  
  342.  
  343.  
  344.               <!-- 文件部分 --> 
  345.  
  346.               <?php 
  347.  
  348.               if(is_array($info['file'])){ 
  349.  
  350.                 foreach($info['file'as $val){              ?> 
  351.  
  352.               <tr class="warning"
  353.  
  354.                 <td><span class="glyphicon glyphicon-file"></span></td> 
  355.  
  356.                 <td><?php echo $val['showName'];?></td> 
  357.  
  358.                 <td> 
  359.  
  360.                   <span class="glyphicon <?php echo $val['readable']?'glyphicon-ok':'glyphicon-remove';?>"></span> 
  361.  
  362.                   <span class="glyphicon <?php echo $val['writable']?'glyphicon-ok':'glyphicon-remove';?>"></span> 
  363.  
  364.                   <span class="glyphicon <?php echo $val['executable']?'glyphicon-ok':'glyphicon-remove';?>"></span> 
  365.  
  366.                 </td> 
  367.  
  368.                 <td><?php echo $val['atime'];?></td> 
  369.  
  370.                 <td> 
  371.  
  372.                   <a href="#" class='btn btn-primary btn-sm showContents' data-url="index.php?act=showContents&fileName=<?php echo $val['fileName'];?>&path=<?php echo $path;?>">查看</a> 
  373.  
  374.                   <a href="#" class='btn btn-primary btn-sm'>编辑</a> 
  375.  
  376.                   <a href="#" class='btn btn-primary btn-sm'>下载</a> 
  377.  
  378.                   <a href="#" class='btn btn-primary btn-sm'>重命名</a> 
  379.  
  380.                   <a href="#" class='btn btn-primary btn-sm'>剪切</a> 
  381.  
  382.                   <a href="#" class='btn btn-primary btn-sm'>复制</a> 
  383.  
  384.                   <a href="#" class='btn btn-danger btn-sm'>删除</a> 
  385.  
  386.                 </td> 
  387.  
  388.               </tr> 
  389.  
  390.               <?php 
  391.  
  392.                 } 
  393.  
  394.               }              ?> 
  395.  
  396.                     </tbody> 
  397.  
  398.                 </table> 
  399.  
  400.             </p> 
  401.  
  402.         </p> 
  403.  
  404.     </p> 
  405.  
  406.  
  407.  
  408.  
  409.  
  410.     <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
  411.  
  412.     <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script> 
  413.  
  414.     <!-- Include all compiled plugins (below), or include inpidual files as needed --> 
  415.  
  416.     <script src="js/bootstrap.min.js"></script> 
  417.  
  418.     <script src="layer/layer.js"></script> 
  419.  
  420.     <script src="js/dir.js"></script> 
  421.  
  422.     <script src="js/file.js"></script> 
  423.  
  424.   </body></html> 

目录函数文件 dir.func.php

  1. <?php/** 
  2.  
  3.  * 读取目录下的信息返回 
  4.  
  5.  * @method read_directory 
  6.  
  7.  * @param  string         $path 目标目录 
  8.  
  9.  * @return mixed               false|array */function read_directory(string $path){  if(!is_dir($path)){    return false; 
  10.  
  11.   }  $info=[];  $handle=opendir($path);  while(($item=@readdir($handle))!==false){    if($item!='.'&&$item!='..'){      $filePath=$path.DIRECTORY_SEPARATOR.$item;      $info['fileName']=$filePath;      $info['showName']=$item;      $info['readable']=is_readable($filePath)?true:false;      $info['writable']=is_writable($filePath)?true:false;      $info['executable']=is_executable($filePath)?true:false;      $info['atime']=date('Y/m/d H:i:s',fileatime($filePath));      if(is_file($filePath)){        $arr['file'][]=$info
  12.  
  13.       }      if(is_dir($filePath)){        $arr['dir'][]=$info
  14.  
  15.       } 
  16.  
  17.     } 
  18.  
  19.   }  closedir($handle);  return $arr
  20.  
  21. }/** 
  22.  
  23.  * 创建目录 
  24.  
  25.  * @method create_dir 
  26.  
  27.  * @param  string     $path 目录名称 
  28.  
  29.  * @return mixed          true|string */function create_dir(string $path){  if(is_dir($path)){    return $path.'当前目录已存在同名文件'
  30.  
  31.   }  if(!mkdir($path,755,true)){    return $path.'目录创建失败'
  32.  
  33.   }  return true; 
  34.  
  35. }/** 
  36.  
  37.  * 重命名目录 
  38.  
  39.  * @method rename_dir 
  40.  
  41.  * @param  string     $oldName 原目录 
  42.  
  43.  * @param  string     $newName 新名称 
  44.  
  45.  * @return mixed              string|true */function rename_dir(string $oldName,string $newName){  if(!is_dir($oldName)){    return '原目录不存在'
  46.  
  47.   }  if(is_dir($newName)){    return '当前目录下存在同名文件'
  48.  
  49.   }  if(!rename($oldName,$newName)){    return '重命名失败'
  50.  
  51.   }  return true; 
  52.  
  53. }/** 
  54.  
  55.  * 删除目录 
  56.  
  57.  * @method del_dir 
  58.  
  59.  * @param  string  $path 目录名称 
  60.  
  61.  * @return mixed        true|string */function del_dir(string $path){  if(!is_dir($path)){    return '目录不存在'
  62.  
  63.   }  $handle=opendir($path);  while(($item=@readdir($handle))!==false){    if($item!='.'&&$item!='..'){      $pathName=$path.DIRECTORY_SEPARATOR.$item;      if(is_file($pathName)){ 
  64.  
  65.         @unlink($pathName); 
  66.  
  67.       }      if(is_dir($pathName)){        $func=__FUNCTION__;        $func($pathName); 
  68.  
  69.       } 
  70.  
  71.     } 
  72.  
  73.   }  closedir($handle);  rmdir($path);  return true; 
  74.  

文件函数 file.func.php

  1. <?php/** 
  2.  
  3.  * 创建文件 
  4.  
  5.  * @method create_file 
  6.  
  7.  * @param  string      $fileName 文件名称 
  8.  
  9.  * @param  array       $allowExt 允许的文件类型 
  10.  
  11.  * @return mixed                true|string */function create_file(string $fileName,$allowExt=array('txt','html','php')){  if(is_file($fileName)){    return '当前目录下存在同名文件'
  12.  
  13.   }  $ext=strtolower(pathinfo($fileName,PATHINFO_EXTENSION));  if(!in_array($ext,$allowExt)){    return '非法文件类型'
  14.  
  15.   }  if(!touch($fileName)){    return '文件创建失败'
  16.  
  17.   }  return true; 
  18.  
  19. }/** 
  20.  
  21.  * 查看文件内容 
  22.  
  23.  * @method show_contents 
  24.  
  25.  * @param  string        $fileName 文件名称 
  26.  
  27.  * @param  array         $allowExt 允许的类型 
  28.  
  29.  * @return string                  文件内容 */function show_contents(string $fileName,$allowExt=array('jpg','jpeg','png','gif','txt','html','php')){  if(!is_file($fileName)){    return '文件不存在'
  30.  
  31.   }  $ext=strtolower(pathinfo($fileName,PATHINFO_EXTENSION));  if(!in_array($ext,$allowExt)){    return '非法文件类型'
  32.  
  33.   }  //检测是否是真实图片 
  34.  
  35.   if(getimagesize($fileName)){    $res="<img src='{$fileName}' class='img-responsive'/>"
  36.  
  37.   }else{    $str=file_get_contents($fileName);    if(strlen($str)>0){      $res=highlight_string($str,true); 
  38.  
  39.     }else{      $res='文件中没有内容'
  40.  
  41.     } 
  42.  
  43.   }  return $res
  44.  
  45. }

Tags: php文件管理系统

分享到: