WEB文件管理器部分代码

原创 2019-01-26 10:04:34 429
摘要: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中对文件操作的函数还有很多 有些函数还是很有意思的 课后没事记得多练习练习哦!

发布手记

热门词条