目录操作模块

课后整理 2021-1-12

使用目录可以把文件进行分类存放,方便管理者查找,所以对目录进行在线管理是非常必要的。在前面章节中,已经涉及很多目录操作的方法,如创建目录、获取当前目录、删除目录等。在本例中,将对目录的基本操作进行汇总,使读者对目录操作方法有个系统的了解。运行结果如图11.18所示。

创建目录                              浏览目录

删除目录                               删除文件

图11.18 目录操作模块

【操作步骤】

第1步,创建index.php,复制11.5.1节文档结构,然后在此基础上完成创建目录、浏览目录、删除目录和删除文件功能。

第2步,创建目录。先设计一个表单结构:

<form name="form1"  id="form1" method="post" action=""><hr>
    <h2>创建目录</h2>
    <p>添加目录位置:<input name="objfile" type="text"  id="objfile"  size="35"></p>
    <p>设置目录存储位置,例如:E:\www	est。</p>
    <p><input name="submit1"  type="submit" id="submit1" value="创建"></p>
</form>

然后,在PHP脚本中接收用户提交的信息,应用mkdir()函数完成目录的创建。

<?php
header("Context-Type:text/html;charset=utf-8");
if (isset($_POST  ['submit1'])&& $_POST ['submit1'] == "创建") {

    $file_dir = iconv ( "utf-8",  "gb2312", $_POST ['objfile'] );
    if (is_dir ( $file_dir )) {
        echo "<script>alert('目录已经存在!');</script>";
    } else {
    if (mkdir ( $file_dir )) {
            echo "<script>alert('目录创建成功!');</script>";
        } else {
            echo "<script>alert('目录创建失败!');</script>";
        }
    }
}
?>

第3步,浏览当前目录。通过getcwd()函数定位到当前目录,并应用opendir()函数和readdir()函数读取当前目录中的内容。

<?php
$lookdir = getcwd (); //获得当前脚本目录
$i = 0;
if (is_dir ( $lookdir )) { //检测是否是合法目录
    if ($opendir = opendir ( $lookdir )) { //打开目录
        while ( $li = readdir ( $opendir ) ) {  //读取目录
            $i ++;
            echo "$i: " . iconv (  "gb2312", "utf-8", $li ). " <br>";
        }
    }
} //输出目录中的内容
?>

第4步,删除目录。在上一步的基础上,为输出的目录创建删除超链接,链接到delete.php文件,完成目录的删除操作。

<?php
$lookdir = getcwd (); //获得当前脚本目录
$i = 0;
if (is_dir ( $lookdir )) { //检测是否是合法目录
    if ($opendir = opendir ( $lookdir )) { //打开目录
        while ( $li = readdir ( $opendir ) ) {  //读取目录
            $i ++;
            echo " $i: " . iconv (  "gb2312", "utf-8", $li );
            if ($li == "." || $li ==  "..") {
                echo "<br>";
            } elseif (filetype ( $li ) ==  "file") {
                echo "<br>";
            } else {
                echo "<a  href='delete.php?catalog=" . urlencode ( $li ) . "' title='删除目录' >删除</a><br>";
            }
        }
    }
} //输出目录中的内容
?>

第 5步,删除文件。在上一步的基础上,为输出的文件创建删除超链接,链接到delete.php文件,完成文件的删除操作。

<?php
$lookdir = getcwd (); //获得当前脚本目录
$i = 0;
if (is_dir ( $lookdir )) { //检测是否是合法目录
    if ($opendir = opendir ( $lookdir )) { //打开目录
        while ( $li = readdir ( $opendir ) ) {  //读取目录
            $i ++;
            echo " $i: " . iconv (  "gb2312", "utf-8", $li ) ;
            if ($li == "." || $li ==  "..") {
                echo "<br>";
            } elseif (filetype ( $li ) ==  "dir") {
                echo "<br>";
            } else {
                echo "<a  href='delete.php?catalog=" . urlencode ( $li ) . "' title='删除文件' >删除</a><br>";
            }
        }
    }
} //输出目录中的内容
?>

第6步,创建delete.php文件,分别应用rmdir()函数和unlinkO函数完成目录和文件的删除。

<?php
header ( "Content-type:  text/html; charset=utf-8" ); //设置文件编码格式
$count = substr_count ( $_GET  ['catalog'], '.' );
if ($count >= 1) {
    if (unlink ( $_GET ['catalog'] )) {
        echo "<script>alert('文件删除成功!');  window.location.href='index.php?dir=deletefile';</script>";
    } else {
        echo "<script>alert('文件删除失败!');  history.back();</script>";
    }
} else {
    if (is_dir ( $_GET ['catalog'] )) {
        if (@rmdir ( $_GET ['catalog'] )) {
            echo "<script>alert('目录删除成功!');  window.location.href='index.php?dir=deletedir';</script>";
        } else {
            echo "<script>alert('目录删除失败!');  history.back();</script>";
        }
    }
}
?>

本例主要应用mkdir()、is_dir()、getcwd()、rmdir()、opendir()和readdir()函数等,完成目录的判断、创建、打开、读取和删除操作。所使用函数的功能和语法简单说明请参考前面说明。