图片上传

1. 准备工作

2. HTML表单

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image" />
    <input type="submit" value="上传" />
</form>

3. PHP上传处理

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["image"]["name"]);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

    // 检查文件是否已存在
    if (file_exists($target_file)) {
        echo "文件已存在,请选择其他文件。";
        $uploadOk = 0;
    }

    // 检查文件类型
    if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") {
        echo "不支持的文件类型。";
        $uploadOk = 0;
    }

    // 检查是否上传成功
    if ($uploadOk == 1) {
        if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
            echo "文件 " . htmlspecialchars(basename($_FILES["image"]["name"])) . " 已成功上传。";
        } else {
            echo "上传文件时发生错误。";
        }
    }
}
?>

4. 图片上传示例

<!DOCTYPE html>
<html>
<head>
    <title>图片上传示例</title>
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="image" />
        <input type="submit" value="上传" />
    </form>
</body>
</html>

图片清除

1. 删除文件

在PHP中,可以使用unlink()函数删除文件。

unlink("uploads/example.jpg");

2. 删除目录

对于包含多个文件的目录,可以使用rmdir()scandir()函数递归删除目录中的所有文件和子目录。

function deleteDirectory($dir) {
    if (!file_exists($dir)) {
        return true;
    }

    if (!is_dir($dir)) {
        return unlink($dir);
    }

    foreach (scandir($dir) as $item) {
        if ($item == '.' || $item == '..') {
            continue;
        }

        if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
            return false;
        }
    }

    return rmdir($dir);
}

deleteDirectory("uploads");

3. 清除示例

<?php
deleteDirectory("uploads/example.jpg");
?>

总结