Web 在线文件管理器学习笔记与总结(3)创建文件
① 创建文件
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="images/<?php echo $src;?>" title=‘文件‘></td> <td><?php echo transByte(filesize($p));?></td> <td><?php $src = is_readable($p)?‘correct.png‘:‘error.png‘;?><img src="images/<?php echo $src;?>" width="32" title=‘可读‘></td> <td><?php $src = is_writeable($p)?‘correct.png‘:‘error.png‘;?><img src="images/<?php echo $src;?>" width="32" title=‘可写‘></td> <td><?php $src = is_executable($p)?‘correct.png‘:‘error.png‘;?><img src="images/<?php echo $src;?>" width="32" 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="images/show.png" width="32" ></a> <a href="" title=‘修改‘><img src="images/edit.png" width="32" ></a> <a href="" title=‘重命名‘><img src="images/rename.png" width="32" ></a> <a href="" title=‘复制‘><img src="images/copy.png" width="32" ></a> <a href="" title=‘剪切‘><img src="images/cut.png" width="32" ></a> <a href="" title=‘删除‘><img src="images/delete.png" width="32" ></a> <a href="" title=‘下载‘><img src="images/download.png" width="32" ></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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。