-
php教程之php实现WEB在线文件管理器
本站最新发布 C#从入门到精通
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
1、效果图
功能包括:
文件夹:创建文件夹、查看文件夹、复制文件夹、剪切文件夹、删除文件夹、重命名文件夹
文件:查看文件、创建文件、编辑文件、复制文件、剪切文件、删除文件、重命名文件、下载文件、上传文件
2、目录结构预览
3、目录操作函数 dir.func.php
<?php // 目录操作函数集合 //打开指定目录 /** * 遍历目录函数,只读取目录中的最外层的内容 * @param string $path * @return array */ function readDirectory($path) { $handle = opendir ( $path ); while ( ($item = readdir ( $handle )) !== false ) { //.和..这2个特殊目录 if ($item != "." && $item != "..") { if (is_file ( $path . "/" . $item )) { $arr ['file'] [] = $item; } if (is_dir ( $path . "/" . $item )) { $arr ['dir'] [] = $item; } } } closedir ( $handle ); return $arr; } //$path="file"; //print_r(readDirectory($path)); /** * 得到文件夹大小 * @param string $path * @return int */ function dirSize($path){ $sum=0; global $sum; $handle=opendir($path); while(($item=readdir($handle))!==false){ if($item!="."&&$item!=".."){ if(is_file($path."/".$item)){ $sum+=filesize($path."/".$item); } if(is_dir($path."/".$item)){ $func=__FUNCTION__; $func($path."/".$item); } } } closedir($handle); return $sum; } //$path="file"; //echo dirSize($path); function createFolder($dirname){ //检测文件夹名称的合法性 if(checkFilename(basename($dirname))){ //当前目录下是否存在同名文件夹名称 if(!file_exists($dirname)){ if(mkdir($dirname,0777,true)){ $mes="文件夹创建成功"; }else{ $mes="文件夹创建失败"; } }else{ $mes="存在相同文件夹名称"; } }else{ $mes="非法文件夹名称"; } return $mes; } /** * 重命名文件夹 * @param string $oldname * @param string $newname * @return string */ function renameFolder($oldname,$newname){ //检测文件夹名称的合法性 if(checkFilename(basename($newname))){ //检测当前目录下是否存在同名文件夹名称 if(!file_exists($newname)){ if(rename($oldname,$newname)){ $mes="重命名成功"; }else{ $mes="重命名失败"; } }else{ $mes="存在同名文件夹"; } }else{ $mes="非法文件夹名称"; } return $mes; } function copyFolder($src,$dst){ //echo $src,"---",$dst."----"; if(!file_exists($dst)){ mkdir($dst,0777,true); } $handle=opendir($src); while(($item=readdir($handle))!==false){ if($item!="."&&$item!=".."){ if(is_file($src."/".$item)){ copy($src."/".$item,$dst."/".$item); } if(is_dir($src."/".$item)){ $func=__FUNCTION__; $func($src."/".$item,$dst."/".$item); } } } closedir($handle); return "复制成功"; } /** * 剪切文件夹 * @param string $src * @param string $dst * @return string */ function cutFolder($src,$dst){ //echo $src,"--",$dst; if(file_exists($dst)){ if(is_dir($dst)){ if(!file_exists($dst."/".basename($src))){ if(rename($src,$dst."/".basename($src))){ $mes="剪切成功"; }else{ $mes="剪切失败"; } }else{ $mes="存在同名文件夹"; } }else{ $mes="不是一个文件夹"; } }else{ $mes="目标文件夹不存在"; } return $mes; } /** * 删除文件夹 * @param string $path * @return string */ function delFolder($path){ $handle=opendir($path); while(($item=readdir($handle))!==false){ if($item!="."&&$item!=".."){ if(is_file($path."/".$item)){ unlink($path."/".$item); } if(is_dir($path."/".$item)){ $func=__FUNCTION__; $func($path."/".$item); } } } closedir($handle); rmdir($path); return "文件夹删除成功"; }
4、文件操作函数 file.func.php
<?php // 文件操作函数集合 //Bytes/Kb/MB/GB/TB/EB /** * 转换字节大小 * @param number $size * @return number */ function transByte($size) { $arr = array ("B", "KB", "MB", "GB", "TB", "EB" ); $i = 0; while ( $size >= 1024 ) { $size /= 1024; $i ++; } return round ( $size, 2 ) . $arr [$i]; } /** * 创建文件 * @param string $filename * @return string */ function createFile($filename) { //file/1.txt //验证文件名的合法性,是否包含/,*,<>,?,| $pattern = "/[\/,\*,<>,\?\|]/"; if (! preg_match ( $pattern, basename ( $filename ) )) { //检测当前目录下是否存在同名文件 if (! file_exists ( $filename )) { //通过touch($filename)来创建 if (touch ( $filename )) { return "文件创建成功"; } else { return "文件创建失败"; } } else { return "文件已存在,请重命名后创建"; } } else { return "非法文件名"; } } /** * 重命名文件 * @param string $oldname * @param string $newname * @return string */ function renameFile($oldname,$newname){ // echo $oldname,$newname; //验证文件名是否合法 if(checkFilename($newname)){ //检测当前目录下是否存在同名文件 $path=dirname($oldname); if(!file_exists($path."/".$newname)){ //进行重命名 if(rename($oldname,$path."/".$newname)){ return "重命名成功"; }else{ return "重命名失败"; } }else{ return "存在同名文件,请重新命名"; } }else{ return "非法文件名"; } } /** *检测文件名是否合法 * @param string $filename * @return boolean */ function checkFilename($filename){ $pattern = "/[\/,\*,<>,\?\|]/"; if (preg_match ( $pattern, $filename )) { return false; }else{ return true; } } /** * 删除文件 * @param string $filename * @return string */ function delFile($filename){ if(unlink($filename)){ $mes="文件删除成功"; }else{ $mes="文件删除失败"; } return $mes; } /** * 下载文件操作 * @param string $filename */ function downFile($filename){ header("content-disposition:attachment;filename=".basename($filename)); header("content-length:".filesize($filename)); readfile($filename); } /** * 复制文件 * @param string $filename * @param string $dstname * @return string */ function copyFile($filename,$dstname){ if(file_exists($dstname)){ if(!file_exists($dstname."/".basename($filename))){ if(copy($filename,$dstname."/".basename($filename))){ $mes="文件复制成功"; }else{ $mes="文件复制失败"; } }else{ $mes="存在同名文件"; } }else{ $mes="目标目录不存在"; } return $mes; } function cutFile($filename,$dstname){ if(file_exists($dstname)){ if(!file_exists($dstname."/".basename($filename))){ if(rename($filename,$dstname."/".basename($filename))){ $mes="文件剪切成功"; }else{ $mes="文件剪切失败"; } }else{ $mes="存在同名文件"; } }else{ $mes="目标目录不存在"; } return $mes; } /** * 上传文件 * @param array $fileInfo * @param string $path * @param array $allowExt * @param int $maxSize * @return string */ function uploadFile($fileInfo,$path,$allowExt=array("gif","jpeg","jpg","png","txt"),$maxSize=10485760){ //判断错误号 if($fileInfo['error']==UPLOAD_ERR_OK){ //文件是否是通过HTTP POST方式上传上来的 if(is_uploaded_file($fileInfo['tmp_name'])){ //上传文件的文件名,只允许上传jpeg|jpg、png、gif、txt的文件 //$allowExt=array("gif","jpeg","jpg","png","txt"); $ext=getExt($fileInfo['name']); $uniqid=getUniqidName(); $destination=$path."/".pathinfo($fileInfo['name'],PATHINFO_FILENAME)."_".$uniqid.".".$ext; if(in_array($ext,$allowExt)){ if($fileInfo['size']<=$maxSize){ if(move_uploaded_file($fileInfo['tmp_name'], $destination)){ $mes="文件上传成功"; }else{ $mes="文件移动失败"; } }else{ $mes="文件过大"; } }else{ $mes="非法文件类型"; } }else{ $mes="文件不是通过HTTP POST方式上传上来的"; } }else{ switch($fileInfo['error']){ case 1: $mes="超过了配置文件的大小"; break; case 2: $mes="超过了表单允许接收数据的大小"; break; case 3: $mes="文件部分被上传"; break; case 4: $mes="没有文件被上传"; break; } } return $mes; }
5、公共函数 common.func.php
<?php // 公共函数集合 /** * 提示操作信息的,并且跳转 * @param string $mes * @param string $url */ function alertMes($mes,$url){ echo "<script type='text/javascript'>alert('{$mes}');location.href='{$url}';</script>"; } /** * 截取文件扩展名 * @param string $filename * @return string */ function getExt($filename){ return strtolower(pathinfo($filename,PATHINFO_EXTENSION)); } /** * 产生唯一名称 * @param int $length * @return string */ function getUniqidName($length=10){ return substr(md5(uniqid(microtime(true),true)),0,$length); }
6、主文件 index.php
<?php require_once 'dir.func.php'; require_once 'file.func.php'; require_once 'common.func.php'; $path="file"; $path=$_REQUEST['path']?$_REQUEST['path']:$path; $act=$_REQUEST['act']; $filename=$_REQUEST['filename']; $dirname=$_REQUEST['dirname']; $info=readDirectory($path); if(!$info){ echo "<script>alert('没有文件或目录!!!');location.href='index.php';</script>"; } //print_r($info); $redirect="index.php?path={$path}"; if($act=="创建文件"){ //创建文件 // echo $path,"--"; // echo $filename; $mes=createFile($path."/".$filename); alertMes($mes,$redirect); }elseif($act=="showContent"){ //查看文件内容 $content=file_get_contents($filename); //echo "<textarea readonly='readonly' cols='100' rows='10'>{$content}</textarea>"; //高亮显示PHP代码 //高亮显示字符串中的PHP代码 if(strlen($content)){ $newContent=highlight_string($content,true); //高亮显示文件中的PHP代码 //highlight_file($filename); $str=<<<EOF <table width='100%' bgcolor='pink' cellpadding='5' cellspacing="0" > <tr> <td>{$newContent}</td> </tr> </table> EOF; echo $str; }else{ alertMes("文件没有内容,请编辑再查看!",$redirect); } }elseif($act=="editContent"){ //修改文件内容 //echo "编辑文件"; $content=file_get_contents($filename); //echo $content; $str=<<<EOF <form action='index.php?act=doEdit' method='post'> <textarea name='content' cols='190' rows='10'>{$content}</textarea><br/> <input type='hidden' name='filename' value='{$filename}'/> <input type="hidden" name="path" value="{$path}" /> <input type="submit" value="修改文件内容"/> </form> EOF; echo $str; }elseif($act=="doEdit"){ //修改文件内容的操作 $content=$_REQUEST['content']; //echo $content; if(file_put_contents($filename,$content)){ $mes="文件修改成功"; }else{ $mes="文件修改失败"; } alertMes($mes,$redirect); }elseif($act=="renameFile"
最新更新
linux常用指令和一些选项的汇总
centos7下安装mysql6初始化安装密码
ubuntu之命令相关问题
文件系统格式化和挂载
关于Linux下内存和Swap
phpize安装php扩展(本文章以php7扩展mbstr
对FileStream的几种属性和方法认识
[原创][开源] SunnyUI.Net 字体图标
C# BinaryWriter BinaryReader demo
后台读取Html文件节点信息写入到新的ht
php安装扩展时报错:make: *** [mbstring.lo]
php多版本:已存在php5场景下,编译安装
编译安装apache2.2对应的mod_proxy_fcgi.so模块
linux修改环境变量分析
[apue] epoll 的一些不为人所注意的特性
树莓派使用 OLED 屏显示图片及文字
容器技术之Dockerfile(三)
【原创】Linux中断子系统(二)-通用框架
C# 在Word中添加Latex 数学公式和符号
inncheck命令 – 检查语法
access数据库远程连接
java web操作Access数据库
数据库学习总结(1)
二级Access数据库大纲知识要点
链接表的意义
《社工服务管理系统》Access开发心得
让ADO.NET Entity Framework 支持ACCESS数据库
C#连接Access
数据库实验系列之3存储过程和触发器实验
Excel 数据导入至Sqlserver 数据库中 ltrim()