File.php

<?php
/**
 * Created by PhpStorm.
 * User: Binz丶Gao
 * Date: 2019/1/5
 * Time: 10:28
 */

class File
{
    public $FilePath;//定义文件路径
    //构造函数
    public function __construct($FilePath)
    {
        $this->FilePath = $FilePath;//赋值
    }
    //index
    public function Index(){
        //判断 文件类型
        if (is_dir($this->FilePath)){
            //如果为目录 读取该文件下的所有文件
            $data = $this->FileAll();
            //处理数据
            return $this->Handle($data);
        }else{
            //获取文件类型
            $FileType = $this->FinFo($this->FilePath);
            //根据文件类型进行操作
            $this->FileType($FileType);
        }
    }
    //读取该路径下的所有文件
    public function FileAll(){
        return scandir($this->FilePath);
    }
    //处理数据
    public function Handle($data){
        $arr = [];//重新定义一个数组
        foreach ($data as $k => $v){
            $FilePath = $this->FilePath.'\\'.$v;//文件的绝对路径
            $arr[$k]['name'] = $v;//文件或目录名称
            $arr[$k]['path'] = $FilePath;//绝对路径

            //获取文件类型
            $FileType = $this->FinFo($FilePath);
            $arr[$k]['type'] = $FileType;//存入数组
        }

        return $arr;
    }
    //MIME
    public function FinFo($FilePath){
        $FinFo = new finfo(FILEINFO_MIME_TYPE);
        return $FinFo->file($FilePath);
    }
    //根据文件类型进行操作
    public function FileType($FileType){
        //swtich选择器
        switch ($FileType){
            //php文件
            case 'text/x-php':
                echo '<xmp>'.file_get_contents($this->FilePath).'</xmp>';
                break;
            //jpg图片
            case 'image/jpeg':
                header("Content-Type: image/jpeg;text/html; charset=utf-8");
                echo file_get_contents($this->FilePath);
                break;
            //png图片
            case 'image/png':
                header("Content-Type: image/jpeg;text/html; charset=utf-8");
                echo file_get_contents($this->FilePath);
                break;
            //html文件
            case 'text/html':
                echo '<xmp>'.file_get_contents($this->FilePath).'</xmp>';
                break;
            //js css文件
            case 'text/plain':
                echo '<xmp>'.file_get_contents($this->FilePath).'</xmp>';
                break;
        }
    }
}

index.php

<?php
require 'File.php';
$path = empty($_GET['path'])?'X:\web':$_GET['path'];
$File = new File($path);
$arr = $File->index();
if (!is_array($arr))die;//如果不是数组 终止以下操作
?>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<table border="1">
    <tr>
        <th>名称</th>
        <th>类型</th>
    </tr>
    <?php
    foreach ($arr as $v){
        ?>
        <tr>
            <td><a href="index.php?path=<?php echo $v['path']?>"><?php echo $v['name']?></a></td>
            <td><?php echo $v['type']?></td>
        </tr>
    <?php
    }
    ?>
</table>

文件类型 switch 判断 可以根据下面链接所添加要执行的操作
参考地址:http://www.w3school.com.cn/media/media_mimeref.asp

最后修改:2020 年 05 月 16 日 04 : 08 PM