获取某一目录的文件或文件夹列表,并且实现点击文件夹可以继续查看该文件夹内部的文件或文件夹。
echo "<table border='1' rules='all'>";
echo "<tr><th>文件名</th><th>时间</th><th>类型</th><th>大小</th></tr>";
$dir_path = '../../zhx';
if (isset($_GET['filepath'])) {
    $dir_path = $_GET['filepath'];
}
$dir = opendir($dir_path);
while ($file_name = readdir($dir)) {
    if ($file_name == '.') {
        continue;
    }
    echo "<tr>";
// 将文件名拼接成完整的路径名
    $file_path = $dir_path . DIRECTORY_SEPARATOR . $file_name;
    $mtime = filemtime($file_path); //时间
    $mtime = date('Y-m-d H:i:s', $mtime);
    $file_type = showex(filetype($file_path)); //类型
    $file_size = getmenu($file_path); //大小
    if (is_dir($file_path)) {
        $file_size = canvertsize(getmenu($file_path));
    }
    if (is_file($file_path)) {
        $file_size = canvertsize(get_size($file_path));
    }
    if (is_dir($file_path)) {
        if ($file_name == '..') {
            $file_name = 'back';
            $mtime = '';
        } else {
            echo "<td><a href='demo.php?filepath={$file_path}'>{$file_name}</a></td><td>$mtime</td><td>$file_type</td><td>$file_size</td>";
        }
    } else {
        echo "<td>$file_name</td><td>$mtime</td><td>$file_type</td><td>$file_size</td>";
    }
    echo "</tr>";
}
echo "</table>";
//计算大小
/*如果是文件直接huoqufilesize
如果是文件夹,需要获取所含文件的数目取得文件大小和..绝望
*/
//遍历文件夹获取目录总大小
//第一层:获得文件夹内所有文件的大小
//
function getmenu($filepath)
{
    $totalsize = 0;
    $fp = @opendir($filepath);
    while ($filename = @readdir($fp)) {
        if ($filename == '.' || $filename == '..') {
            continue;
        }
        $newpath = $filepath . DIRECTORY_SEPARATOR . $filename;
        if (is_dir($newpath)) {
            $totalsize += getmenu($newpath);
        } else {
            $totalsize += get_size($newpath);
        }
    }
    return $totalsize;
}
获取文件的大小
function get_size($file_name)
{
    $size = '';
    if (is_file($file_name)) {
        $size = filesize($file_name);
    }
    return $size;
}
文件大小单位的转换
function canvertsize($size)
{
    if ($size >= pow(2, 40)) {
        $size = ceil($size / pow(2, 40)) . "TB";
    } else if ($size >= pow(2, 30)) {
        $size = ceil($size / pow(2, 30)) . "GB";
    } else if ($size >= pow(2, 20)) {
        $size = ceil($size / pow(2, 20)) . "MB";
    } else if ($size >= pow(2, 10)) {
        $size = ceil($size / pow(2, 10)) . "KB";
    } else {
        $size = $size . 'B';
    }
    return $size;
}
显示目录或者文件
function showex($url)
{
    if ($url == 'dir') {
        return "目录";
    } else {
        return "文件";
    }
}
?>
HTML
<style>
   table {
       width: 100%;
       height: auto;
       text-align: center;
   }
   tr {
       height: 35px;
   }
</style>