一、引言

二、HTML表单设计

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

在这个表单中,enctype="multipart/form-data"属性确保了表单可以发送文件数据。name="fileToUpload"属性用于在PHP脚本中标识上传的文件。

三、PHP文件上传处理

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_FILES["fileToUpload"])) {
        $file_name = $_FILES["fileToUpload"]["name"];
        $file_tmp_name = $_FILES["fileToUpload"]["tmp_name"];
        $file_size = $_FILES["fileToUpload"]["size"];
        $file_error = $_FILES["fileToUpload"]["error"];
        $file_type = $_FILES["fileToUpload"]["type"];

        $file_ext = explode('.', $file_name);
        $file_actual_ext = strtolower(end($file_ext));
        $allowed = array('jpg', 'jpeg', 'png', 'gif');

        if (in_array($file_actual_ext, $allowed)) {
            if ($file_error === 0) {
                if ($file_size < 500000) {
                    $file_new_name = uniqid('', true) . '.' . $file_actual_ext;
                    $file_destination = "uploads/" . $file_new_name;

                    if (move_uploaded_file($file_tmp_name, $file_destination)) {
                        echo "The file " . htmlspecialchars($file_name) . " has been uploaded.";
                    } else {
                        echo "Sorry, there was an error uploading your file.";
                    }
                } else {
                    echo "Sorry, your file is too large.";
                }
            } else {
                echo "Sorry, there was an error uploading your file.";
            }
        } else {
            echo "You cannot upload files of this type.";
        }
    }
}
?>

在这个脚本中,我们首先检查用户是否提交了表单,并获取上传文件的详细信息。然后,我们检查文件类型是否允许,文件大小是否在范围内。如果一切正常,我们将文件重命名并移动到服务器上的指定目录。

四、图片显示

<img src="uploads/your_file_name.jpg" alt="Uploaded Image">

五、总结