① 创建文件

a. 文件名的合法性:不能包含 \/:*"<>| 等特殊字符

b. 检测当前目录下是否存在同名文件,如果存在提示请重命名后创建,如果不存在则直接创建

index.php:

<?php
require 'dir.func.php';
require 'file.func.php';
require 'common.func.php';
$path = 'file';
$info = readDirectory($path); $act = @$_REQUEST['act'];
$filename = @$_REQUEST['filename'];
//跳转变量
$redirect = "index.php?path={$path}";
if($act == 'createFile'){
//创建文件
$mes = createFile($path.'/'.$filename);
alertMes($mes,$redirect);
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="cikonss.css" />
<link rel="stylesheet" href="common.css" />
</head>
<body>
<h1>在线文件管理器</h1>
<div id="top">
<ul id="navi">
<li><a href="index.php" title="主目录"><span style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span class="icon-home"></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 class="icon-file"></span></span></a></li>
<li><a href="#" title="新建文件夹"><span style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span class="icon-folder"></span></span></a></li>
<li><a href="#" title="上传文件"><span style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span class="icon-upload"></span></span></a></li>
<li><a href="#" title="返回上级目录"><span style="margin-left: 8px; margin-top: 0px; top: 4px;" class="icon icon-small icon-square"><span class="icon-arrowLeft"></span></span></a></li>
</ul>
</div>
<form action="index.php" method="post" enctype="multipart/form-data">
<table width='100%' border='1' cellpadding="5" cellspacing="0" bgcolor="#abcdef" align="center">
<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="hidden" name='act' value='createFile'/>
<input type="submit" 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>
<tr align="center">
<td>编号</td>
<td>名称</td>
<td>类型</td>
<td>大小</td>
<td>可读</td>
<td>可写</td>
<td>可执行</td>
<td>创建时间</td>
<td>修改时间</td>
<td>访问时间</td>
<td>操作</td>
</tr>
<?php
if($info['file']){
$i = 1;
foreach($info['file'] as $val){
$p = $path.'/'.$val;
?>
<tr align="center">
<td><?php echo $i;?></td>
<td><?php echo $val;?></td>
<td><?php $src = filetype($p) == 'file'?'file_ico.png':'folder_ico.png';?><img src="data:images/<?php echo $src;?>" alt="" title='文件'></td>
<td><?php echo transByte(filesize($p));?></td>
<td><?php $src = is_readable($p)?'correct.png':'error.png';?><img src="data:images/<?php echo $src;?>" width="32" alt="" title='可读'></td>
<td><?php $src = is_writeable($p)?'correct.png':'error.png';?><img src="data:images/<?php echo $src;?>" width="32" alt="" title='可写'></td>
<td><?php $src = is_executable($p)?'correct.png':'error.png';?><img src="data:images/<?php echo $src;?>" width="32" alt="" title='可写'></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="" title='查看'><img src="data:images/show.png" width="32" alt=""></a>
<a href="" title='修改'><img src="data:images/edit.png" width="32" alt=""></a>
<a href="" title='重命名'><img src="data:images/rename.png" width="32" alt=""></a>
<a href="" title='复制'><img src="data:images/copy.png" width="32" alt=""></a>
<a href="" title='剪切'><img src="data:images/cut.png" width="32" alt=""></a>
<a href="" title='删除'><img src="data:images/delete.png" width="32" alt=""></a>
<a href="" title='下载'><img src="data:images/download.png" width="32" alt=""></a>
</td>
</tr>
<?php
$i++;
}
}
?>
</table>
</form>
<script src='common.js'></script>
</body>
</html>

common.func.php 存放公共方法:

<?php
//提示操作信息并跳转
function alertMes($mes,$url){
echo "<script>alert('{$mes}');location.href='{$url}';</script>";
}

common.js:

function show(dis){
document.getElementById(dis).style.display = 'block';
}

file.func.php:

<?php
/*
转换字节大小
*/
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];
} /*
创建文件
*/
/*
注意:
createFile函数前面的正则表达式部分使用了 basename 函数,这个函数会过滤掉所有的 / 斜杠。
这样在文件名中任意输入 / 不会引起报错。
*/
function createFile($filename){
//验证文件名合法性,是否包含特殊字符 \ / : | * " ? < >
$pattern = '/[\/,\*,<,>,\?\|,\\\\,:,"]/'; // * < > | ? : "有效
if(!preg_match($pattern, basename($filename))){
//检测当前目录现是否存在同名文件
if(!file_exists($filename)){
//通过touch方法创建文件
if(@touch($filename)){
return '文件创建成功';
}else{
return '文件创建失败';
}
}else{
return '文件已存在,请重命名后创建';
}
}else{
return '非法文件名';
}
}

② 查看文件

③ 修改文件

参考:

正则表达式匹配反斜杠:http://blog.csdn.net/longyulu/article/details/8294114

PHP正则匹配反斜杠'\'和美元'$':http://www.oschina.net/code/snippet_583625_20448

Web 在线文件管理器学习笔记与总结(3)创建文件的更多相关文章

  1. Web 在线文件管理器学习笔记与总结(19)上传文件

    dir.func.php 中添加方法: /* 上传文件 */ function uploadFile($fileInfo,$path,$allowExt = array('jpg','jpeg','p ...

  2. Web 在线文件管理器学习笔记与总结(17)复制文件 (18)剪切文件

    (17)复制文件 ① 复制文件通过copy($src,$dst) 来实现 ② 检测目标目录是否存在,如果存在则继续检测目标目录中是否存在同名文件,如果不存在则复制成功 file.func.php 中添 ...

  3. Web 在线文件管理器学习笔记与总结(15)剪切文件夹 (16)删除文件夹

    (15)剪切文件夹 ① 通过rename($oldname,$newname) 函数实现剪切文件夹的操作 ② 需要检测目标文件夹是否存在,如果存在还要检测目标目录中是否存在同名文件夹,如果不存在则剪切 ...

  4. Web 在线文件管理器学习笔记与总结(13)重命名文件夹(14)复制文件夹

    (13)重命名文件夹 ① 重命名文件夹通过 rename($oldname,$newname) 实现 ② 检测文件夹名是否符合规范 ③ 检测当前目录中是否存在同名文件夹名称,如果不存在则重命名成功 i ...

  5. Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作

    (11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...

  6. Web 在线文件管理器学习笔记与总结(10)查看文件夹中的内容

    ① 读取文件夹大小 a. 封装计算文件夹大小的函数 b.  打开文件夹 c. 循环判断文件夹下的内容是文件还是文件夹,如果是文件,则累积相加文件的大小:如果是文件夹,则递归调用该函数 注意两个问题: ...

  7. Web 在线文件管理器学习笔记与总结(9)下载文件

    ① 普通形式的文件可以使用超链接形式下载 <a href = '下载文件名'>点击下载</a> ② 如果下载图片.html 等类型的文件,使用header() 函数发送网页头信 ...

  8. Web 在线文件管理器学习笔记与总结(8)删除文件

    unlink($filename) 删除文件 index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...

  9. Web 在线文件管理器学习笔记与总结(7)重命名文件

    rename($oldname,$newname) 重命名文件或目录 <<<EOF EOF; 使用heredoc 技术,来部分实现界面与代码的准分离 重命名时,需要验证新文件名的合法 ...

  10. Web 在线文件管理器学习笔记与总结(6)jQuery UI 预览图片

    ① 查看文件内容,如果文件是图片类型,点击直接查看图片: ② 如果不是图片类型,显示文件中的内容: ③ 使用 jQuery UI 中的 Dialog 显示图片 a.引入: <script src ...

随机推荐

  1. Cocos2dx开发游戏移植到Android平台

    第一步:安装配置安卓SDK,下载NDK并解压,下载cygwin并安装 第二步:导入platform文件夹下,android文件夹下java文件夹 在eclispe的windows--pereferen ...

  2. soft lockup和hard lockup介绍

    转自:http://www.cnblogs.com/openix/p/4034530.html 转自:http://blog.csdn.net/panzhenjie/article/details/1 ...

  3. sybase常用SQL语句,工作中积累的

    -------创建sybase设备 语句--------- disk init name="DEV_DB_CLIENT_DAT26", physname="F:\syba ...

  4. Word2013对公式处理:样式、自动编号、交叉引用

    因快写毕业论文,专门研究了一下Word2013对公式的处理,有一点小心得,记在这里. 文章中公式展示的预期效果是:公式居中,尾端有编号,同时在文章中可以实现引用.实现该效果有很多方法,这里就说一种,其 ...

  5. 记录sqoop同步失败问题解决过程,过程真的是很崎岖。(1月6日解决)

    记录sqoop同步失败问题解决过程,过程真的是很崎岖.事发原因:最近突然出现sqoop export to mysql时频繁出错.看了下日志是卡在某条数据过不去了,看异常.看sqoop生成的mr并未发 ...

  6. String的一些蹊跷

    字符串不属于基本类型,但是可以像基本类型一样,直接通过字面量赋值,当然也可以通过new来生成一个字符串对象.不过通过字面量赋值的方式和new的方式生成字符串有本质的区别: 通过字面量赋值创建字符串时, ...

  7. 简单几何(线段相交) POJ 1410 Intersection

    题目传送门 题意:一个矩形和一条线段,问是否有相交 分析:考虑各种情况.坑点:给出的矩形的两个端点是无序的,还有线段完全在矩形内也算相交 /****************************** ...

  8. 简单几何(直线与圆的交点) ZOJ Collision 3728

    题目传送门 题意:有两个一大一小的同心圆,圆心在原点,大圆外有一小圆,其圆心有一个速度(vx, vy),如果碰到了小圆会反弹,问该圆在大圆内运动的时间 分析:将圆外的小圆看成一个点,判断该直线与同心圆 ...

  9. DP URAL 1244 Gentlemen

    题目传送门 /* 题意:已知丢失若干卡片后剩余的总体积,并知道原来所有卡片的各自的体积,问丢失的卡片的id DP递推:首先从丢失的卡片的总体积考虑,dp[i] 代表体积为i的方案数,从dp[0] = ...

  10. python 代码片段12

    #coding=utf-8 d={'title':'python web development','year':2008} print d.setdefault('pub','addision we ...