引言
一、环境准备
在开始编写代码之前,请确保您的服务器已安装以下软件:
- 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();
}
?>