个人随笔
技术改变世界

PHP 显示文件夹目录

php

在用户上传一些文件之后,能够看到所上传的文件,并可以操作这些文件的内容对他们来说是非常必要的。PHP提供了一系列目录函数与文件系统函数,它们都是实现此功能的非常有用的工具。

首先,我们将实现一个能够浏览所上传文件的目录脚本。在PHP中,浏览目录实际上是非常简单的。下面是程序例子的PHP代码:

Browsedir.php 文件代码:

<html>
<head>
    <title>浏览目录</title>
</head>
<body>
    <h1>浏览</h1>
    <?php
        $current_dir = './uploads/';
        $dir = opendir($current_dir);

        echo "<p>上传目录是 $current_dir</p>";
        echo "<p>目录列表</p><ul>";

        while (false !== ($file = readdir($dir))) {
            //strip out the two entries of . and ..
            if($file != "." && $file != ".."){
                echo "<li>$file</li>";
            }
        }
        echo "</ul>";
        closedir($dir);
    ?>
</body>
</html>

以上脚本使用了函数opendir()、closedir()和readdir()。

函数opendir()用于打开所浏览的目录。这类似于用函数fopen()打开所读取的文件。只是传递给此函数的参数不是文件名称,而是一个目录名称:

$dir = opendir($current_dir);

该函数将返回一个目录句柄,这一点与函数fopen()返回文件句柄是非常类似的。

在目录打开后,可以通过readdir($dir)从目录读取文件,正如本文中的例子所示。当该目录中没有可读取的文件的时候,该函数将返回false。请注意,当该函数读取一个名为“0”的文件时,也将返回false——为了确保这一点,可以通过测试来确定返回值是否为false。

while (false !== ($file = readdir($dir)))

当完成从目录中读取文件的步骤后,可以通过调用函数closedir($dir)关闭该目录,这也类似于调用函数fclose()来关闭文件。

通常,.(当前目录)和..(上一级)目录也会显示在文件夹清单中。但是这里,我们使用了如下代码将它们过滤了:

if($file != "." && $file != "..")

如果删除了这行代码,那么当前目录和上一级的目录就会出现在列表中,下面我们先看看程序运行的效果吧:
folder
如果通过这种机制提供浏览目录的功能,这么限制可以浏览的目录是很明智的,因为这样用户就不能够浏览特殊的目录列表。

在这里,一个相关的并且是非常实用的函数是rewinddir($dir),该函数将所读的文件恢复到开始的目录。

除了这些函数外,还可以使用PHP提供的dir类,该类具有handle和path属性,以及read()、close()和rewind()方法,它们与以上所介绍的非类函数有着相同的作用。

转载请注明出处王旭博客 » PHP 显示文件夹目录

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址