一、准备工作

在开始之前,请确保您已经具备以下条件:

  1. 安装并配置好PHP环境。
  2. 安装并配置好数据库(如MySQL)。
  3. 准备一个用于存放上传图片的目录,并确保该目录有写权限。

二、HTML表单设计

<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文件上传处理

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

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

    // 检查文件是否上传成功
    if ($file_error == 0) {
        // 检查文件类型
        if (in_array($file_type, $allowed_types)) {
            // 设置上传目录
            $upload_dir = 'uploads/';
            $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
            $new_file_name = uniqid() . '.' . $file_ext;

            // 移动文件到上传目录
            if (move_uploaded_file($file_tmp, $upload_dir . $new_file_name)) {
                // 将文件信息插入数据库
                // ...

                echo "文件上传成功!";
            } else {
                echo "文件上传失败!";
            }
        } else {
            echo "不支持的文件类型!";
        }
    } else {
        echo "文件上传出错!错误代码:" . $file_error;
    }
}
?>

四、将文件信息插入数据库

<?php
// 连接数据库
$db = new mysqli('localhost', 'username', 'password', 'database');

// 检查连接
if ($db->connect_error) {
    die("连接失败: " . $db->connect_error);
}

// 获取文件信息
$file_name = $_FILES['fileToUpload']['name'];
$file_size = $_FILES['fileToUpload']['size'];
$upload_time = date('Y-m-d H:i:s');

// 插入数据库
$query = "INSERT INTO images (name, size, upload_time) VALUES ('$file_name', '$file_size', '$upload_time')";
if ($db->query($query) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $query . "<br>" . $db->error;
}

// 关闭数据库连接
$db->close();
?>

在这个示例中,我们首先连接到MySQL数据库,然后获取文件信息。接下来,我们构造了一个插入数据的SQL语句,并将其执行。如果插入成功,我们将输出“新记录插入成功”,否则输出错误信息。

五、总结