PHP基础语法之文件重命名,复制、删除

文件操作函数file: file/action.php

<?php
/* 文件操作函数 */

function get_file_list($dir)
{
    //获取相应$dir目录下的文件名
    if (!is_dir($dir)) return false;
    $handler = opendir($dir);
    if ($handler === false) return false;
    $list = array('file' => array(), 'dir' => array()); //创建一个list数组,且里面存在一个file和dir数组,来分别存储文件和目录列表
    while ($file = readdir($handler)) {
        if ($file == "." || $file == "..") continue; //点号表示当前目录,两个点号表示上级目录,这个需要排除
        if (is_dir($dir . "/" . $file)) //判断是目录
            $list['dir'][] = $file;
        if (is_file($dir . "/" . $file)) //判断是文件
            $list['file'][] = $file;
        //还有其他类型的文件,不列出,忽略
    }
    closedir($handler);
    return $list;
}

function post_action()
{
    $rt = array('status' => false, 'message' => ''); //通过设置一个状态数组,并返回
    global $file_dir; //将04file04.php文件中的$file_dir变量作为一个全局变量
    echo "\n<!--$file_dir-->\n"; //输出到文件,使用html注释
    if($_POST['action'] =="new_dir"){
        //这个操作是新建文件夹,所以不需要判断提交的操作文件是否存在
        if(file_exists($file_dir."/".$_POST['new_dir']) == false){
            //判断目的文件是否存在,file_exist和is_file与is_dir相比就是只有有那个东西,不管是什么,有就存在
            if(mkdir($file_dir."/".$_POST['new_dir'])){
                $rt['message']=$_POST['new_dir']." 文件夹创建成功";
                $rt['status'] = true;
            }else{
                $rt['message']=$_POST['new_dir']." 文件夹创建失败";
            }

        }else{
             $rt['message'] = "要创建的文件夹已存在";
        }
        return $rt;//此时执行返回操作就是说本函数执行完毕,不再执行之后的内容
    }
    if (file_exists($file_dir . "/" . $_POST['file']) == false) {
        //判定文件是否存在
        $rt['message'] = "提交的文件或路径不存在";
    } else {
        switch ($_POST['action']) {
            case "rename":
                if (file_exists($file_dir . "/" . $_POST['rename']) == true) {
                    $rt['message'] = "要重命名的目标文件或路径已存在";
                }
                if (rename($file_dir . "/" . $_POST['file'], $file_dir . "/" . $_POST['rename'])) {
                    $rt['message'] = "文件重命名成功";
                    $rt['status'] = true;
                } else {
                    $rt['message'] = "文件重命名失败";
                }
                break;
            case "copy":
                if (file_exists($file_dir . "/" . $_POST['copy']) == true) {
                    $rt['message'] = "要复制的目标文件或路径已存在";
                }
                if (copy($file_dir . "/" . $_POST['file'], $file_dir . "/" . $_POST['copy'])) {
                    $rt['message'] = "文件或目录复制成功";
                    $rt['status'] = true;
                } else {
                    $rt['message'] = "文件复制失败,如果是文件夹,则无法复制";
                }
                break;
            case "delete":
                if (unlink($file_dir . "/" . $_POST['file'])) {
                    $rt['message'] = $_POST['file'] . " 删除成功";
                    $rt['status'] = true;
                } else {
                    $rt['message'] = "文件或目录删除失败,请检查权限,或者查看文件夹是否存在在目录,因为未对该情况进行操作";
                }
                break;
        }
    }
    return $rt;
}

文件操作表单

<?php
/* 文件的重命名,复制、删除操作 */
header("Content-Type: text/html; charset=utf-8");
include("file/action.php");
$file_dir = "file/write";
$file_list = get_file_list($file_dir);
if ($file_list === false) die("文件列表获取失败,请检查是否存在"$file_dir"目录");
?>
<html>
<head>
    <title>文件操作</title>
</head>
<body>
<p>可以通过查看源码的方式查看下面隐藏的注释内容</p>
<!--测试POST表单-->
<!--<?php print_r($_POST);?>-->

<!--下面的语句用于测试输出的文件或目录列表-->
<!--<?php print_r($file_list);?>-->

<?php
if($_SERVER['REQUEST_METHOD']=="POST"){
    echo "<div style="background-color: #f5f5dc;padding: 5px;">";
   $arr = post_action();
    if($arr['status']){
        echo "<p style="color: blue;">".$arr['message'].
            "<a href="".basename($_SERVER['SCRIPT_NAME'])."">刷新</a></p>";
    }else{
        echo "<p style="color: red;">".$arr['message']."</p>";
    }
    echo "</div>";
}
?>

<form action="" method="post">
    <p>选择要操作的文件或目录列表:<select name="file">
        <?php
        foreach ($file_list['dir'] as $dir)
            echo "<option value="$dir">[目录] $dir</option>\n";
        foreach ($file_list['file'] as $file)
            echo "<option value="$file">[文件] $file</option>\n";
        ?>
    </select></p>
    <p>修改名为:<input name="rename" type="text" value="" />
    <button type="submit" value="rename" name="action">重命名</button></p>

    <p>复制为:<input name="copy" type="text" value="" />
        <button type="submit" value="copy" name="action">开始复制文件</button></p>

    <p>创建文件夹:<input name="new_dir" type="text" value="" />
        <button type="submit" value="new_dir" name="action">创建文件夹</button></p>

    <p> <button type="submit" value="delete" name="action">删除选中文件</button></p>


</form>
</body>
</html>

7条评论在“PHP基础语法之文件重命名,复制、删除”

回复 mercurylmy   取消