摘要://func_lib.php <?php //创建文件 function create_file($fileName) { if(file_exists($fileName)){ return '文件已存在'; } if(!is_dir(dirname($fileName))){ mkdir(dirname($fileName),0777,t
//func_lib.php
<?php
//创建文件
function create_file($fileName)
{
if(file_exists($fileName)){
return '文件已存在';
}
if(!is_dir(dirname($fileName))){
mkdir(dirname($fileName),0777,true);
}
if(touch($fileName)){
return '文件创建成功!';
}
return '文件创建失败!';
}
// echo create_file('D:\myphp_www\PHPTutorial\WWW\test.php');
//删除文件
function delete_file($fileName)
{
if(!file_exists($fileName) || !is_writable($fileName)){
return '文件不存在或没有操作权限';
}
if(unlink($fileName)){
return '文件删除成功!';
}
return '文件删除失败!';
}
// echo delete_file('D:\myphp_www\PHPTutorial\WWW\test.php');
//文件复制
function copy_file($fileName,$dest)
{
if(!file_exists($fileName) || !is_writable($fileName)){
return '文件不存在或没有操作权限';
}
if(!is_dir($dest)){
mkdir($dest,0777,true);
}
$destName = rtrim($dest,'\\/').'/'.basename($fileName);
if(file_exists($destName)){
return '目标文件已存在!';
}
if(copy($fileName,$destName)){
return '文件复制成功!';
}else{
return '文件复制失败!';
}
}
// echo copy_file('./a - copy.php','d:/');
//文件重命名
function rename_file($oldName,$newName)
{
if(!file_exists($oldName) || !is_writable($oldName)){
return '文件不存在或没有操作权限';
}
$newName = dirname($oldName).'/'.$newName;
if(file_exists($newName)){
return '目标文件已存在!';
}
if(rename($oldName,$newName)){
return '文件重命名成功!';
}else{
return '文件重命名失败!';
}
}
// echo rename_file('./aa.php','a.php');
function cut_file($fileName,$destDir)
{
if(!is_file($fileName) || !is_writable($fileName)){
return '该文件不存在或不可写';
}
if(!is_dir($destDir)){
mkdir($destDir,0777,true);
}
$destName = rtrim($destDir,'\\/').'/'.basename($fileName);
if(is_file($destName)){
return '目标目录已存在同名文件';
}
if(rename($fileName,$destName)){
return '剪切文件成功!';
}
return '剪切文件失败!';
}
// echo cut_file('d:/a.php','D:\myphp_www\PHPTutorial\WWW\test');
function get_file_info($fileName)
{
date_default_timezone_set('Asia/Shanghai');
if(!is_file($fileName) || !is_writable($fileName)){
return '该文件或目录不存在或不可写';
}
return [
'type' => filetype($fileName),
'ctime' => date('Y-m-d H:i:s',filectime($fileName)),
'mtime' => date('Y-m-d H:i:s',filemtime($fileName)),
'atime' => date('Y-m-d H:i:s',fileatime($fileName)),
'size' => trans_byte(filesize($fileName))
];
}
// print_r(get_file_info('a.php'));
function trans_byte($byte,$precision = 2)
{
$kb = 1024;
$mb = 1024 * $kb;
$gb = 1024 * $mb;
$tb = 1024 * $gb;
if($byte < $kb){
return $byte.'B';
}elseif($byte < $mb){
return round($byte/$kb,$precision).'KB';
}elseif($byte < $gb){
return round($byte/$mb,$precision).'MB';
}elseif($byte < $tb){
return round($byte/$gb,$precision).'GB';
}else{
return round($byte/$tb,$precision).'TB';
}
}
function read_file($fileName)
{
if(!file_exists($fileName)){
return '该文件不存在!';
}
return file_get_contents($fileName);
}
function read_file_array($fileName,$skip_empty_lines = false)
{
if(is_file($fileName) && is_readable($fileName)){
if($skip_empty_lines){
return file($fileName,FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
}else{
return file($fileName);
}
}
return '该文件不存在或不可读';
}
// echo print_r(read_file_array('a.php',true),true);
function write_file($fileName,$data,$clear = false)
{
$dir = dirname($fileName);
if(!is_dir($dir)){
mkdir($dir,0777,true);
}
if(is_array($data) || is_object($data)){
$data = serialize($data);
}
if($clear == false){
if(is_file($fileName) && is_readable($fileName)){
if(filesize($fileName) > 0){
$srcData = file_get_contents($fileName);
$data = $srcData.$data;
}
}
}
if(file_put_contents($fileName, $data)){
return '文件写入成功';
}
return '文件写入失败';
}
// echo write_file('./file/test.txt',['name'=>'郭靖','age'=>55]);
function load_file($fileName)
{
header('Accept-Length:'.filesize($fileName));
header('Content-Disposition:attachment;filename='.basename($fileName));
readfile($fileName);
exit;
}
// echo load_file('test.txt');
function upload_file($fileinfo, $destDir='./upload', $allowExt=['jpg','gif','png','txt','php'], $size=1000000)
{
if($fileinfo['size']>0){
if(!is_uploaded_file($fileinfo['tmp_name'])){
return '不是通过表单上传文件';
}
$ext = strtolower(pathinfo($fileinfo['name'],PATHINFO_EXTENSION));
if(!in_array($ext, $allowExt)){
return '上传文件后缀不允许';
}
if($fileinfo['size'] > $size){
return '上传文件过大';
}
if(!is_dir($destDir)){
mkdir($destDir, 0777, true);
}
$destName = rtrim($destDir,'\\/').'/'.md5(uniqid('',true)).'.'.$ext;
if(!move_uploaded_file($fileinfo['tmp_name'], $destName)){
return '上传文件失败!';
}
return '上传文件成功!';
}else{
switch ($fileinfo['error']) {
case 1:
# code...
return '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 ';
break;
case 2:
return '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 ';
break;
case 3:
return '文件只有部分被上传。 ';
break;
case 4:
return '没有文件被上传。 ';
break;
case 6:
return '找不到临时文件夹。';
break;
default:
return '文件写入失败。';
break;
}
}
}
//----------------------目录操作--------------------------
function create_folder($dir)
{
if(is_dir($dir)){
return '该目录已存在!';
}
if(mkdir($dir, 0777, true)){
return '目录创建成功!';
}
return '目录创建失败!';
}
// echo create_folder('./a/b/c');
function delete_folder($dir)
{
if(!is_dir($dir)){
return '该目录不存在';
}
$dh = opendir($dir);
while ($row = readdir($dh)) {
# code...
if($row != '.' && $row != '..'){
$dir = rtrim($dir,'\\/');
if(is_file($dir.'/'.$row)){
unlink($dir.'/'.$row);
}
if(is_dir($dir.'/'.$row)){
$func = __FUNCTION__;
$func($dir.'/'.$row);
}
}
}
rmdir($dir);
closedir($dh);
return '目录删除成功!';
}
// echo delete_folder('./a/');
function copy_dir($dir,$destDir)
{
$destDir = rtrim($destDir,'\\/').'/'.basename($dir);
if(is_dir($destDir)){
return '目标目录已存在';
}else{
mkdir($destDir, 0777, true);
}
$dh = opendir($dir);
$dir = rtrim($dir,'\\/');
$destDir = rtrim($destDir,'\\/');
while ($row = readdir($dh)) {
if($row != '.' && $row != '..'){
if(is_file($dir.'/'.$row)){
copy($dir.'/'.$row,$destDir.'/'.$row);
}
if(is_dir($dir.'/'.$row)){
$func = __FUNCTION__;
$func($dir.'/'.$row,$destDir.'/'.$row);
}
}
}
closedir($dh);
return '目录复制成功';
}
// echo copy_dir('D:\2345Downloads\\','D:\myphp_www\PHPTutorial\WWW\2345Downloads\\');
function rename_dir($oldDir, $newDir)
{
if(is_dir($newDir)){
return '目标目录已存在!';
}
$newDir = dirname($oldDir).'/'.basename($newDir);
if(rename($oldDir, $newDir)){
return '目录重命名成功!';
}
return '目录重命名失败!';
}
// echo rename_dir('./file','./file1');
function cut_dir($srcDir, $destDir)
{
if(is_dir($destDir)){
$destDir = rtrim($destDir,'\\/').'/'.basename($srcDir);
if(file_exists($destDir)){
if(rename($srcDir, $destDir)){
return '目录剪切成功!';
}else{
return '目录剪切失败!';
}
}else{
return '目标目录已存在!';
}
}else{
return '目标不是一个目录';
}
}
// echo cut_dir('./a','../');
function read_dir($dir)
{
$arr = [];
$dh = opendir($dir);
while($row = readdir($dh)){
if($row != '.' && $row != '..'){
$dir = rtrim($dir,'\\/');
if(is_file($dir.'/'.$row)){
$arr['file'][] = $row;
}
if(is_dir($dir.'/'.$row)){
$arr['dir'][] = $row;
}
}
}
closedir($dh);
return $arr;
}
// echo print_r(read_dir('./'),true);
function dir_size($dir)
{
static $num = 0;
$dh = opendir($dir);
while(($row = readdir($dh)) !== false){
if($row!='.' && $row!='..'){
$dir = rtrim($dir,'\\/');
if(is_file($dir.'/'.$row)){
$num += filesize($dir.'/'.$row);
}
if(is_dir($dir.'/'.$row)){
$func = __FUNCTION__;
$func($dir.'/'.$row);
}
}
}
closedir($dh);
return trans_byte($num);
}
// echo trans_byte(dir_size('../oa'));
//file.php
<?php
require_once '../func_lib.php';
$path = '../';
@$path = $_REQUEST['path']?:$path;
$data = read_dir($path);
@$act = $_REQUEST['act'];
@$filename = $_REQUEST['filename'];
@$dirname = $_REQUEST['dirname'];
$url = $_SERVER['PHP_SELF'].'?path='.$path;
require './operation.php';
require './muban.php';
//muban.php
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP中文网—Web在线文件管理器</title>
<link rel="stylesheet" href="css/cikonss.css"/>
<link rel="stylesheet" href="css/style.css"/>
<link rel="stylesheet" href="css/jquery-ui-1.10.4.custom.css" type="text/css"/>
<script src="js/jquery-1.10.2.js"></script>
<script src="js/jquery-ui-1.10.4.custom.js"></script>
<script src="js/action.js"></script>
</head>
<body>
<h1>PHP中文网—Web在线文件管理器</h1>
<div id="showDetail" style="display:none"><img src="" id="showImg" alt=""/></div>
<div id="top">
<ul id="navi">
<li><a href="file.php" title="主目录"><span style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span></span></span></a></li>
<li><a href="#" onclick="show('createFile')" title="新建文件"><span
style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span
></span></span></a></li>
<li><a href="#" onclick="show('createFolder')" title="新建文件夹"><span
style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span
></span></span></a></li>
<li><a href="#" onclick="show('uploadFile')" title="上传文件"><span
style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span
></span></span></a></li>
<li><a href="#" title="返回上级目录" onclick="goBack('')"><span
style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span
></span></span></a></li>
</ul>
</div>
<form action="file.php" method="post" enctype="multipart/form-data">
<table width="100%" border="1" cellpadding="5" cellspacing="0" bgcolor="#ABCDEF">
<tr id="createFolder" style="display:none;">
<td>请输入文件夹名称</td>
<td>
<input type="text" name="dirname"/>
<input type="hidden" name="path" value="<?php echo $path;?>"/>
<input type="submit" name="act" value="创建文件夹"/>
</td>
</tr>
<tr id="createFile" style="display:none;">
<td>请输入文件名称</td>
<td>
<input type="text" name="filename"/>
<input type="hidden" name="path" value="<?php echo $path;?>"/>
<input type="submit" name="act" value="创建文件"/>
</td>
</tr>
<tr id="uploadFile" style="display:none;">
<td>请选择要上传的文件</td>
<td><input type="file" name="myFile"/>
<input type="submit" name="act" value="上传文件"/>
</td>
</tr>
</table>
</form>
<table width="100%" border="1" cellpadding="5" cellspacing="0" bgcolor="#ABCDEF">
<tr>
<th>编号</th>
<th>名称</th>
<th>类型</th>
<th>大小</th>
<th>可读</th>
<th>可写</th>
<th>可执行</th>
<th>创建时间</th>
<th>修改时间</th>
<th>访问时间</th>
<th>操作</th>
</tr>
<?php $i=1;if(!empty($data['file'])):?>
<?php foreach($data['file'] as $v):?>
<?php $p = rtrim($path,'\\/').'/'.$v;$info=get_file_info($p);?>
<tr>
<td><?php echo $i;?></td>
<td><?php echo iconv('GBK','UTF-8',$v);?></td>
<td><img src="images/file_ico.png" title="文件"></td>
<td><?php echo $info['size'];?></td>
<td><?php $src=is_readable($p)?'correct.png':'error.png';?><img src="images/<?php echo $src;?>"></td>
<td><?php $src=is_writable($p)?'correct.png':'error.png';?><img src="images/<?php echo $src;?>"></td>
<td><?php $src=is_executable($p)?'correct.png':'error.png';?><img src="images/<?php echo $src;?>"></td>
<td><?php echo $info['ctime'];?></td>
<td><?php echo $info['mtime'];?></td>
<td><?php echo $info['atime'];?></td>
<td>
<?php
$ext = pathinfo($v,PATHINFO_EXTENSION);
$allowExt = ['jpg','jpeg','gif','png'];
if(in_array($ext, $allowExt)):
?>
<a href="javascript:showDetail('<?php echo $v;?>','<?php echo $p;?>');"><img src="images/show.png" alt="" title="查看"/></a>
<?php else:?>
<a href="?act=showContent&path=<?php echo $path;?>&filename=<?php echo $p;?>"><img src="images/show.png" alt="" title="查看"/></a>
<?php endif;?>
<a href="?act=editContent&path=<?php echo $path;?>&filename=<?php echo $p;?>"><img src="images/edit.png" alt="" title="修改"/></a>
<a href="?act=renameFile&path=<?php echo $path;?>&filename=<?php echo $p;?>"><img src="images/rename.png" alt="" title="重命名"/></a>
<a href="?act=copyFile&path=<?php echo $path;?>&filename=<?php echo $p;?>"><img src="images/copy.png" alt="" title="复制"/></a>
<a href="?act=cutFile&path=<?php echo $path;?>&filename=<?php echo $p;?>"><img src="images/cut.png" alt="" title="剪切"/></a>
<a href="?act=loadFile&path=<?php echo $path;?>&filename=<?php echo $p;?>"><img src="images/download.png" alt="" title="下载"/></a>
<a href="?act=delFile&path=<?php echo $path;?>&filename=<?php echo $p;?>" onclick="delFile('<?php echo iconv('GBK', 'UTF-8', $p);?>','<?php echo $path;?>')"><img src="images/delete.png" alt="" title="删除"/></a>
</td>
</tr>
<?php $i++;endforeach;?>
<?php endif;?>
<?php if(!empty($data['dir'])):?>
<?php $j=$i;foreach($data['dir'] as $v):?>
<?php $p = rtrim($path,'\\/').'/'.$v;?>
<tr>
<td><?php echo $j;?></td>
<td><?php echo $v;?></td>
<td><img src="images/folder_ico.png" title="文件夹"></td>
<td><?php echo dir_size($p);?></td>
<td><?php $src=is_readable($p)?'correct.png':'error.png';?><img src="images/<?php echo $src;?>"></td>
<td><?php $src=is_writable($p)?'correct.png':'error.png';?><img src="images/<?php echo $src;?>"></td>
<td><?php $src=is_executable($p)?'correct.png':'error.png';?><img src="images/<?php echo $src;?>"></td>
<td><?php echo date('Y-m-d H:i:s',filectime($p));?></td>
<td><?php echo date('Y-m-d H:i:s',filemtime($p));?></td>
<td><?php echo date('Y-m-d H:i:s',fileatime($p));?></td>
<td>
<a href="?path=<?php echo $p;?>"><img src="images/show.png" alt="" title="查看"/></a>
<a href="?act=renameDir&path=<?php echo $path;?>&dirname=<?php echo $p;?>"><img src="images/rename.png" alt="" title="重命名"/></a>
<a href="?act=copyDir&path=<?php echo $path;?>&dirname=<?php echo $p;?>"><img src="images/copy.png" alt="" title="复制"/></a>
<a href="?act=cutDir&path=<?php echo $path;?>&dirname=<?php echo $p;?>"><img src="images/cut.png" alt="" title="剪切"/></a>
<a href="#" onclick="delFolder('<?php echo $p;?>','<?php echo $path;?>')"><img src="images/delete.png" alt="" title="删除"/></a>
</td>
</tr>
<?php $j++;endforeach;?>
<?php endif;?>
</table>
</body>
</html>
//operation.php
<?php
include './common.php';
if($act == '创建文件夹'){
$res = create_folder(rtrim($path,'\\/').'/'.$dirname);
alertMsg($res,$url);
}elseif($act == '创建文件'){
$res = create_file(rtrim($path,'\\/').'/'.$filename);
alertMsg($res,$url);
}elseif($act == 'showContent'){//查看文件内容
$content = read_file($filename);
if(strlen($content)){
$newContent = highlight_string($content,true);
$str = <<<HERE
<table width="100%" cellpadding="5" cellspacing="0">
<tr>
<td>{$newContent}</td>
</tr>
</table>
HERE;
echo $str;
}else{
alertMsg('该文件是空的!请编辑!',$url);
}
}elseif($act == 'editContent'){//显示修改文件内容模板
$content = read_file($filename);
$str = <<<HERE
<form action="?act=doEdit" method='post'>
请输入内容:<textarea name="content" cols="30" rows="10">{$content}</textarea>
<input type="hidden" name="path" value="{$path}">
<input type="hidden" name="filename" value="{$filename}">
<input type="submit" value='提交'>
</form>
HERE;
echo $str;
}elseif($act == 'doEdit'){//修改文件操作
$content = $_REQUEST['content'];
$res = write_file($filename,$content,$clear = true);
alertMsg($res, $url);
}elseif($act == 'renameFile'){//重命名文件模板
$name = basename($filename);
$str = <<<HERE
<form action="?act=doRenameFile" method="post">
请输入新名称:<input type="text" name="newname" value="{$name}">
<input type="hidden" name="path" value="{$path}">
<input type="hidden" name="filename" value="{$filename}">
<input type="submit" value="提交">
</form>
HERE;
echo $str;
}elseif($act == 'doRenameFile'){//重命名文件
$newname = $_REQUEST['newname'];
$res = rename_file($filename, $newname);
alertMsg($res, $url);
}elseif($act == 'renameDir'){//重命名目录模板
$name = basename($dirname);
$str = <<<HERE
<form action="?act=doRenameDir" method="post">
请输入新名称:<input type="text" name="newname" value="{$name}">
<input type="hidden" name="dirname" value="{$dirname}">
<input type="hidden" name="path" value="{$path}">
<input type="submit" value="提交">
</form>
HERE;
echo $str;
}elseif($act == 'doRenameDir'){//重命名目录
$newname = $_REQUEST['newname'];
$res = rename_dir($dirname, $newname);
alertMsg($res, $url);
}elseif($act == 'copyFile'){//复制文件模板
$str = <<<HERE
<form action="?act=doCopyFile" method="post">
复制到:<input type="text" name="destDir">
<input type="hidden" name="path" value="{$path}">
<input type="hidden" name="filename" value="{$filename}">
<input type="submit" value="复制">
</form>
HERE;
echo $str;
}elseif($act == 'doCopyFile'){//复制文件
$destDir = $_REQUEST['destDir'];
$res = copy_file($filename,rtrim($path,'\\/').'/'.$destDir);
alertMsg($res, $url);
}elseif($act == 'cutFile'){//剪切文件模板
$str = <<<HERE
<form action="?act=doCutFile" method="post">
剪切到:<input type="text" name="destDir">
<input type="hidden" name="path" value="{$path}">
<input type="hidden" name="filename" value="{$filename}">
<input type="submit" value="剪切">
</form>
HERE;
echo $str;
}elseif($act == 'doCutFile'){//剪切文件
$destDir = $_REQUEST['destDir'];
$res = cut_file($filename, rtrim($path,'\\/').'/'.$destDir);
alertMsg($res, $url);
}elseif($act == 'copyDir'){//复制目录模板
$folder = basename($dirname);
$str = <<<HERE
<form action="?act=doCopyDir" method="post">
把{$folder}文件夹复制到:<input type="text" name="destDir">
<input type="hidden" name="dirname" value="{$dirname}">
<input type="hidden" name="path" value="{$path}">
<input type="submit" value="复制">
</form>
HERE;
echo $str;
}elseif($act == 'doCopyDir'){//复制目录
$destDir = $_REQUEST['destDir'];
$res = copy_dir($dirname, rtrim($path,'\\/').'/'.$destDir);
alertMsg($res, $url);
}elseif($act == 'cutDir'){//剪切目录模板
$folder = basename($dirname);
$str = <<<HERE
<form action="?act=doCutDir" method="post">
把{$folder}文件夹剪切到:<input type="text" name="destDir">
<input type="hidden" name="dirname" value="{$dirname}">
<input type="hidden" name="path" value="{$path}">
<input type="submit" value="剪切">
</form>
HERE;
echo $str;
}elseif($act == 'doCutDir'){//剪切目录
$destDir = $_REQUEST['destDir'];
$res = cut_dir($dirname, rtrim($path,'\\/').'/'.$destDir);
alertMsg($res, $url);
}elseif($act == 'loadFile'){//下载文件
//echo $filename;exit;
load_file($filename);
}elseif($act == 'delFile'){//删除文件
$filename = iconv('UTF-8', 'GBK', $filename);
$res = delete_file($filename);
alertMsg($res, $url);
}elseif($act == '上传文件'){//上传文件
$fileInfo = $_FILES['myFile'];
$res = upload_file($fileInfo,'../upload');
alertMsg($res, $url);
}elseif($act == 'delFile'){//删除文件
$res = delete_file(rtrim($path,'\\/').'/'.$filename);
alertMsg($res, $url);
}elseif($act == 'delFolder'){//删除目录
$res = delete_folder(rtrim($path,'\\/').'/'.$dirname);
alertMsg($res, $url);
}
//common.php
<?php
function alertMsg($msg,$url)
{
echo "<script>alert('{$msg}');location.href='{$url}';</script>";
}
批改老师:天蓬老师批改时间:2019-05-17 17:44:02
老师总结:php的文档管理功能, 与其它语言相比, 还是很简单的, 但效率还是可以的