摘要:operation.php<?php /** * 操作配置 */ include 'common.php'; //判断点击 if ($act == 'showContent'){ //获取文件内容 &n
operation.php
<?php
/**
* 操作配置
*/
include 'common.php';
//判断点击
if ($act == 'showContent'){
//获取文件内容
$content = read_file($filename);
//判断内容是否为空
if (strlen($content)){
//代码高亮
$newContent = highlight_string($content,true);
//制作显示表格
$str = <<<HERE
<table width="100%" bgcolor="#ffe4c4" cellpadding="10">
<tr><td>{$newContent}</td></tr>
</table>
HERE;
echo $str;
}else{
alertMsg('文件为空!',$url);
}
//判断点击 //修改内容
}elseif ($act == 'editContent'){
//获取文件内容
$content = read_file($filename);
//制作表单
$str =<<<HERE
<form action="index.php?act=doEdit" method="post">
<input type="hidden" name="filename" value="{$filename}">
<textarea cols="180" rows="10" name="content" >{$content}</textarea>
<input type="submit" value="提交">
</form>
HERE;
echo $str;
//判断操作
}elseif ($act == 'doEdit'){
//接收修改的内容
$content = $_REQUEST['content'];
//进行修改并判断
if (file_put_contents($filename,$content)){
alertMsg('文件修改成功!',$url);
}else{
alertMsg('文件修改失败!',$url);
}
//判断点击操作 //文件重命名
}elseif ($act == 'reNameFile'){
//制作表单
$str = <<<HERE
<form action="index.php?act=doRename" method="post">
请输入新名称:<input type="text" name="newname" value="" placeholder="请输入新名称">
<input name="filename" value="{$filename}" type="hidden">
<input type="submit" value="修改">
</form>
HERE;
echo $str;
//判断操作
}elseif ($act == 'doRename'){
//获取新名称
$newName = $_REQUEST['newname'];
//进行重命名操作
$mes = rename_file($filename,$path . '/' .$newName);
//提示信息
alertMsg($mes,$url);
//判断点击操作 复制
}elseif ($act == 'copyFile'){
//制作表单
$str = <<<HERE
<form action="index.php?act=doCopyFile" method="post">
<input type="hidden" name="filename" value="{$filename}">
<input type="hidden" name="path" value="{$path}">
复制到:<input type="text" name="dest" value="" placeholder="复制到">
<input type="submit" value="复制">
</form>
HERE;
echo $str;
//判断操作
}elseif ($act == 'doCopyFile'){
//接收表单数据
$dest = $_REQUEST['dest'];
//复制操作
$mes = copy_file($filename,$path . '/' . $dest);
//提示信息
alertMsg($mes,$url);
}elseif ($act == 'cutFile'){
$str = <<<HERE
<form action="index.php?act=doCutFile" method="post">
<input type="hidden" name="filename" value="{$filename}">
<input type="hidden" name="path" value="{$path}">
剪切到:<input type="text" name="dest" value="" placeholder="剪切到">
<input type="submit" value="剪切">
</form>
HERE;
echo $str;
//判断操作
}elseif ($act == 'doCutFile'){
//接收表单数据
$dest = $_REQUEST['dest'];
//复制操作
$mes = cut_file($filename,$path . '/' . $dest);
//提示信息
alertMsg($mes,$url);
}elseif($act == 'downFile'){
down_file($filename);
}elseif ($act == 'delFile'){
$mes = del_file($filename);
alertMsg($mes,$url);
}elseif ($act == '创建文件'){
$mes = create_file($path . '/' .$filename);
alertMsg($mes,$url);
}elseif ($act == '创建文件夹'){
$mes = create_folder($path . "/" . $dirname);
alertMsg($mes,$url);
}elseif ($act == '上传文件'){
$mes = upload_file($fileInfo, $path);
alertMsg($mes,$url);
}elseif($act == 'renameFolder'){
$str = <<<HERE
<form action="index.php?act=doRenameFolder" method="post">
<input type="hidden" name="dirname" value="{$dirname}">
<input type="hidden" name="path" value="{$path}">
请输入新文件夹名称:<input type="text" name="newname" value="" placeholder="请输入新目录名称">
<input type="submit" value="重命名">
</form>
HERE;
echo $str;
}elseif($act == 'doRenameFolder'){
$dirname = $_REQUEST['dirname'];
$path = $_REQUEST['path'];
$newName = $_REQUEST['newname'];
$mes = rename_dir($dirname,$path . '/' .$newName);
alertMsg($mes,$url);
}elseif ($act == 'copyFolder'){
$str = <<<HERE
<form action='index.php?act=doCopyFolder' method='post'>
<input type="hidden" name="dirname" value="{$dirname}">
<input type="hidden" name="path" value="{$path}">
复制到:<input type="text" name="newname" value="" placeholder="复制到">
<input type="submit" value="复制">
</form>
HERE;
echo $str;
}elseif ($act == 'doCopyFolder'){
$newName = $_REQUEST['newname'];
$mes = copy_dir($dirname,$path . '/' .$newName .'/'. basename($dirname));
alertMsg($mes,$url);
}elseif ($act =='cutFolder'){
$str = <<<HERE
<form action='index.php?act=doCutFolder' method='post'>
<input type="hidden" name="dirname" value="{$dirname}">
<input type="hidden" name="path" value="{$path}">
剪切到:<input type="text" name="newname" value="" placeholder="剪切到">
<input type="submit" value="剪切">
</form>
HERE;
echo $str;
}elseif ($act == 'doCutFolder'){
$newName = $_REQUEST['newname'];
$mes = cut_dir($dirname,$path . '/' .$newName);
alertMsg($mes,$url);
}elseif ($act == 'delFolder'){
$mes = del_folder($dirname);
alertMsg($mes,$url);
}function.php
<?php
/**
* 封装函数
*/
//逻辑走向:先判断文件是否存在,存在输出提示信息,再判断目录是否存在,不存在则创建目录,再创建文件,输出提示信息,输出失败信息
/** 创建文件
* @param $filename //需要创建的文件名
* @return string //提示信息
*/
function create_file($filename){
//判断文件是否存在
if (file_exists($filename)){
return '文件已经存在!';
}
//判断目录是否存在,不存在则创建
if (!file_exists(dirname($filename))){
mkdir($filename,0777,true);
}
//创建文件
if (touch($filename)){
return '文件创建成功!';
}
return '文件创建失败!';
}
//echo create_file('web.txt');
/**
* 文件删除操作
* @param $filename //要删除文件的名称
* @return string 提示信息
*/
function del_file($filename){
//判断文件是否存在并查询文件是否可写
if (!file_exists($filename) && !is_writable($filename)){
return '文件不存在或没有权限!';
}
//删除文件并判断
if (unlink($filename)){
return '文件删除成功!';
}
return '文件删除失败';
}
//echo del_file('text/text.txt');
/**
* 文件复制操作
* @param $filename //要复制的文件名
* @param $dest //目标目录
* @return string //提示信息
*/
function copy_file($filename,$dest){
//判断文件是否存在并查询文件是否可写
if (!file_exists($filename) && !is_writable($filename)){
return '此文件不可操作!';
}
//查询目录是否存在,不存在则创建
if (!is_dir($dest)){
mkdir($dest,0777,true);
}
//
$destname = $dest.'/'.basename($filename);
if (file_exists($destname)){
return '目标文件夹下已经存在此文件!';
}
if (copy($filename,$destname)){
return '文件复制成功!';
}
return '文件复制失败';
}
//echo copy_file('text.txt','text1');
/**
* 文件重命名操作
* @param $oldname //老文件
* @param $newname //新文件名
* @return string //提示信息
*
*/
function rename_file($oldname,$newname){
//判断文件是否存在并查询是否可写
if (!file_exists($oldname) && !is_writable($oldname)){
return '此文件不可操作';
}
//获取当前文件目录
$dest = dirname($oldname);
//拼接重命名后的文件路径及文件名
$destname = $dest .'/' .basename($newname);
//判断重命名的文件是否存在
if (file_exists($destname)){
return '此文件名已经存在!';
}
//重命名操作并验证
if (rename($oldname,$newname)){
return '文件重命名成功!';
}
return '文件重命名失败!';
}
/**
* 文件剪切操作
* @param $filename //需要剪切的文件
* @param $dest //目标目录
* @return string //提示信息
*/
function cut_file($filename,$dest){
//判断文件是否存在且是否可写
if (!is_file($filename)){
return '该文件不能剪切!';
}
//判断目标目录是否存在,不存在则创建
if (!is_dir($dest)){
mkdir($dest,0777,true);
}
//拼接文件路径
$destname = $dest.'/'.basename($filename);
//检查目标目录下是否存在源文件同名文件
if (is_file($destname)){
return '目标目录文件已经存在!';
}
//剪切操作并验证
if (rename($filename,$destname)){
return '文件剪切成功!';
}
return '文件剪切失败!';
}
//echo cut_file('text.csv','text');
/**
* 文件信息查询操作
* @param $filename //需要查询的文件名
* @return array|string 文件信息
*/
function get_file_info($filename){
//判断文件是否为正常文件并判断是否为可读文件
if (!is_file($filename) && !is_readable($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)) //文件大小
];
}
//var_dump(get_file_info('index.html'));
/**
* 字节转换操作
* @param $byte //文件大小
* @param int $precision //保留小数位
* @return string
*/
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';
}
}
/**
* 文件内容读取操作
* @param $filename //需要读取的文件名
* @return bool|string //文件内容|提示信息
*/
function read_file($filename){
// 检查文件是否为正常文件并检查文件是否可读
if (is_file($filename) && is_readable($filename)){
//读取内容
return file_get_contents($filename);
}
return '该文件无法读取!';
}
//echo read_file('index.html');
/**
* 文件内容读取为数组
* @param $filename //需要查询的文件名
* @param bool $skip_empty_lines //是否跳过空行
* @return array|bool|string
*/
function read_file_array($filename,$skip_empty_lines = false){
// 检查文件是否为正常文件并检查文件是否可读
if (is_file($filename) && is_readable($filename)){
// 判断是否跳过空行
if ($skip_empty_lines == true) {
return file($filename, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
}
else{
// 查询文件内容
return file($filename);
}
}
return '该文件无法读取!';
}
//print_r(read_file_array('index.html'));
/**
* 文件写入操作
* @param $filename //要写入的文件名
* @param $data //待写入的数据
* @param bool $clear //是否清空原数据
* @return string 提示信息
*/
function write_file($filename,$data,$clear=false){
$dirname = dirname($filename);
if (!is_dir($dirname)){
mkdir($dirname,0777,true);
}
if (is_array($data) || is_object($data)){
$data = serialize($data);
}
if ($clear==false){
if (is_file($filename) && is_writable($filename)){
if (filesize($filename)>0){
$srcdata = file_get_contents($filename);
$data = $srcdata.$data;
}
}
}
if (file_put_contents($filename,$data)){
return '文件写入成功';
}
return '文件写入失败!';
}
//$data = [
// 'name'=>'rambo',
// 'age'=>'30'
//];
//$data = 'PHP中文网';
//
//echo write_file('file/text.txt',$data);
/**
* 文件下载操作
* @param $filename //下载的文件名
*/
function down_file($filename){
//告诉浏览器返回的文件大小
header('Accept-Length:' . filesize($filename));
//告诉浏览器文件作为附件处理,并告诉浏览器下载完的文件名
header('Content-Disposition:attachment;filename=' . basename($filename));
//输出文件
readfile($filename);
exit();
}
//down_file('index.html');
/**
* 文件上传操作
* @param $fileInfo //文件名称
* @param string $uploadPath //上传的目录
* @param array $allowExt //上传的文件类型
* @param int $MaxSize
* @return string
*/
function upload_file($fileInfo,$uploadPath='./upload',$allowExt=['jpg','gif','png','jpeg','txt','sql'],$MaxSize=10000000)
{
$res = '';
if ($fileInfo['error'] === 0){
// 获取文件后缀
$ext = strtolower(pathinfo($fileInfo['name'],PATHINFO_EXTENSION));
// 判断文件类型
if (!in_array($ext,$allowExt)){
return '非法文件类型!';
}
// 判断文件大小
if ($fileInfo['size']>$MaxSize){
return '超出文件上传最大值!';
}
// 判断文件上传方式
if (!is_uploaded_file($fileInfo['tmp_name'])){
return '非法上传';
}
// 判断需要移动到的目录是否存在
if (!is_dir($uploadPath)){
mkdir($uploadPath,0777,true);
}
// 生成唯一的文件名 uniqid 生成唯一id microtime 返回当前unix时间戳中的微秒
$uniName = md5(uniqid(microtime(true),true)) . '.' . $ext;
// 拼接路径以及文件名
$dest =$uploadPath.'/'.$uniName;
// 将文件移动到指定目录
if (!move_uploaded_file($fileInfo['tmp_name'],$dest)){
return '文件上传失败!';
}
return '文件上传成功!';
}else{
switch ($fileInfo['error']){
case 1:
$res = '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值!';
break;
case 2:
$res = '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值!';
break;
case 3:
$res = '文件只有部分被上传!';
break;
case 4:
$res = '没有文件被上传1';
break;
case 6:
$res = '找不到临时文件夹!';
break;
case 7:
$res = '文件写入失败';
break;
}
return $res;
}
}
/*-----------------------------------------------目录操作----------------------------------------------*/
/**
* 目录创建操作
* @param $dirName //需要创建的文件路径
* @return string 提示信息
*/
function create_folder($dirName){
//判断目录是否存在
if (is_dir($dirName)){
return '该目录名已存在!';
}
//创建目录
if (mkdir($dirName,0777,true)){
return '目录创建成功!';
}
return '目录创建失败!';
}
//echo create_folder('css/img');
/**
* @param $path //要删除的目录
* @return string 提示信息
*/
function del_folder($path){
//打开目录
$dir = opendir($path);
//循环读取目录中的内容
while($item = readdir($dir)){
//判断 . 和 .. 特别文件或目录
if ($item !='.' && $item !='..'){
//判断是否为真正的文件
if (is_file($path . '/' . $item)){
//删除文件
unlink($path . '/' .$item);
}
//判断是否为真正的目录
if (is_dir($path . '/' . $item)){
//回调函数
$func = __FUNCTION__;
//使用方法
$func($path . '/' . $item);
}
}
}
//关闭目录
closedir($dir);
//删除目录
rmdir($path);
return '文件删除成功!';
}
//echo del_folder('css');
/**
* 目录复制操作
* @param $src //源目录
* @param $dest //目录目录
* @return string 提示信息
*/
function copy_dir($src,$dest){
//判断是否存在目录或文件
if (file_exists($dest)){
return '存在相同的目录或文件!';
}else{
mkdir($dest,0777,true);
}
//打开原目录
$dir = opendir($src);
//循环读取目录或文件
while ($item = readdir($dir)){
//判断.和..特别目录或文件
if ($item != "." && $item != ".."){
//判断是否为真正的文件
if (is_file($src . '/' . $item)){
//复制文件
copy($src . '/' .$item,$dest . '/' .$item);
}
//判断是否为真正的目录
if (is_dir($src . '/' . $item)){
//回调方法
$func = __FUNCTION__;
//使用方法
$func($src . '/' .$item,$dest . '/' .$item);
}
}
}
//关闭目录
closedir($dir);
return '目录复制成功!';
}
//echo copy_dir('text','file/text');
/**
* 目录重命名操作
* @param $oldDir //老目录名称
* @param $newDir //新目录名称
* @return string 提示信息
*/
function rename_dir($oldDir,$newDir){
//判断新目录名称是否存在
if (!file_exists($newDir)){
// 重命名操作
if (rename($oldDir,$newDir)){
return '目录重命名成功!';
}else{
return '目录重命名失败!';
}
}
return '新文件夹名称已经存在!';
}
//echo rename_dir('text','js');
/**
* 剪切目录操作
* @param $src 源目录
* @param $dest 目标目录
* @return string 提示信息
*/
function cut_dir($src,$dest){
//判断目标目录是否存在
if (is_dir($dest)){
//拼接目标目录
$destName = $dest . '/' .basename($src);
//判断目标目录下是否存在相同目录
if (!file_exists($destName)){
//剪切操作
if (rename($src,$destName)){
return '目录剪切成功!';
}else{
return '目录剪切失败!';
}
}else{
return '目录已存在!';
}
}else{
return '目标目录不存在';
}
}
//echo cut_dir('upload','js');
/**
* 目录读取操作
* @param $path //读取的目录
* @return array|string //数组|提示信息
*/
function read_dir($path){
//判断目录是否存在
if (file_exists($path)){
$res =[];
$dir = opendir($path); //打开目录
//循环读取目录或文件
while($item = readdir($dir)){
//判断.和..特别文件或目录
if ($item != '.' && $item !='..'){
//判断是否为文件
if (is_file($path . '/' .$item)){
$res['file'][] = $item;
}
//判断是否为目录
if (is_dir($path . '/' .$item)){
$res['dir'][] = $item;
}
}
}
//关闭目录
closedir($dir);
//输出数据
return $res;
}else{
return '目录不存在';
}
}
//var_dump(read_dir('demo'));
/**目录大小查询操作
* @param $path //要读取的目录
* @return int|string 目录大小
*/
function dir_size($path){
//判断目录或文件是否存在
if (file_exists($path)){
//打开目录
$dir = opendir($path);
$sum = 0;
//声明一个全局变量
global $sum;
//循环读取目录或文件
while ($item = readdir($dir)){
//判断是否为.和..特别文件或目录
if ($item != '.' && $item !='..'){
//判断是否为文件
if (is_file($path . '/' .$item)){
$sum += filesize($path . '/' .$item);
}
//判断是否为目录
if (is_dir($path . '/' .$item)){
//回调方法
$func = __FUNCTION__;
//使用方法
$func($path . '/' .$item);
}
}
}
//关闭目录
closedir($dir);
//输出目录大小
return $sum;
}else{
return '目录不存在';
}
}
//echo trans_byte(dir_size('js'));config.php
<?php
/**
* 配置文件
*/
include "function.php";
$path = "file";
@$path = $_REQUEST['path'] ? $_REQUEST['path'] : $path;
$data = read_dir($path);
// 判断目录是否有内容
if (!$data) {
echo "<script>alert('无文件或目录!')</script>";
}
@$act = $_REQUEST['act'];
@$filename= $_REQUEST['filename&
批改老师:韦小宝批改时间:2019-01-26 11:03:46
老师总结:写的很棒!! 不错不错 PHP中对文件操作的函数还有很多 有些函数还是很有意思的 课后没事记得多练习练习哦!