引言

一、环境准备

在开始编写代码之前,请确保您的服务器已安装以下软件:

  • PHP
  • Apache 或 Nginx
  • MySQL(可选,用于存储图片路径)

二、前端页面设计

首先,我们需要设计一个简单的上传页面。以下是一个基本的HTML表单示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>图片上传</title>
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="image[]" multiple>
        <input type="submit" value="上传图片">
    </form>
</body>
</html>

三、后端PHP脚本编写

1. 文件上传验证

<?php
// 设置允许上传的图片类型
$allowed_types = array('jpg', 'jpeg', 'png', 'gif');
$max_size = 2 * 1024 * 1024; // 2MB

// 获取上传的文件数组
$files = $_FILES['image'];

foreach ($files['name'] as $key => $name) {
    $file_tmp = $files['tmp_name'][$key];
    $file_size = $files['size'][$key];
    $file_error = $files['error'][$key];
    $file_type = strtolower(pathinfo($name, PATHINFO_EXTENSION));

    // 验证文件类型
    if (!in_array($file_type, $allowed_types)) {
        die("文件类型错误,请上传jpg, jpeg, png或gif格式的图片。");
    }

    // 验证文件大小
    if ($file_size > $max_size) {
        die("文件大小超过,请上传不超过2MB的图片。");
    }

    // 验证是否有上传错误
    if ($file_error > 0) {
        die("文件上传出错,错误代码:" . $file_error);
    }
}
?>

2. 文件保存

接下来,我们将验证通过的文件保存到服务器上。

<?php
// 设置图片保存路径
$upload_dir = 'uploads/';

// 生成唯一文件名
foreach ($files['name'] as $key => $name) {
    $file_type = strtolower(pathinfo($name, PATHINFO_EXTENSION));
    $file_name = uniqid() . '.' . $file_type;
    $file_path = $upload_dir . $file_name;

    // 移动文件到指定目录
    if (!move_uploaded_file($files['tmp_name'][$key], $file_path)) {
        die("文件保存失败。");
    }
}
?>

3. 数据库存储(可选)

<?php
// 连接数据库(示例,请替换为您的数据库配置)
$db = new mysqli('localhost', 'username', 'password', 'database');

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

// 插入图片路径到数据库
foreach ($files['name'] as $key => $name) {
    $file_name = uniqid() . '.' . $file_type;
    $file_path = $upload_dir . $file_name;

    $stmt = $db->prepare("INSERT INTO images (path) VALUES (?)");
    $stmt->bind_param("s", $file_path);
    $stmt->execute();
}
?>

四、总结