引言

前端表单设计

<form action="upload.php" method="post" enctype="multipart/form-data">
    <label for="fileToUpload">选择图片文件:</label>
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="上传图片">
</form>

在上面的代码中,enctype="multipart/form-data" 是必须的,它告诉表单如何处理文件数据。

后端处理

<?php
// 检查是否有文件被上传
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['fileToUpload'])) {
    $file = $_FILES['fileToUpload'];
    $file_name = $file['name'];
    $file_tmp_name = $file['tmp_name'];
    $file_size = $file['size'];
    $file_error = $file['error'];
    $file_type = $file['type'];

    // 定义允许的图片类型
    $allowed_types = array('image/jpeg', 'image/png', 'image/gif');

    // 验证文件类型
    if (in_array($file_type, $allowed_types)) {
        // 验证文件大小(例如,不超过 2MB)
        if ($file_size <= 2097152) {
            // 验证是否有错误发生
            if ($file_error === 0) {
                // 移动文件到指定目录
                $destination = "uploads/" . basename($file_name);
                if (move_uploaded_file($file_tmp_name, $destination)) {
                    echo "文件上传成功!";
                } else {
                    echo "文件上传失败。";
                }
            } else {
                echo "错误:文件上传错误代码 " . $file_error;
            }
        } else {
            echo "错误:文件大小超出。";
        }
    } else {
        echo "错误:不支持的文件类型。";
    }
}
?>

文件验证

在上面的代码中,我们进行了以下验证:

  1. 检查是否通过 POST 方法提交了文件。
  2. 验证文件类型是否为允许的类型。
  3. 验证文件大小是否在范围内。
  4. 验证文件上传过程中是否发生错误。

错误处理

错误处理是上传过程中非常重要的一环。在上面的代码中,我们通过检查 $file_error 变量来处理可能发生的错误。

图片存储

总结