1. 准备工作
在开始之前,请确保您的服务器已安装PHP和GD库,GD库是PHP处理图像的一个扩展库。
2. 创建表单
<form action="upload.php" method="post" enctype="multipart/form-data">
选择图片:<input type="file" name="image" />
<input type="submit" value="上传" />
</form>
在这个表单中,enctype="multipart/form-data" 是关键,它确保了表单数据以二进制形式发送,这是上传文件所必需的。
3. PHP处理上传
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_FILES['image'])) {
$file = $_FILES['image'];
$file_name = $file['name'];
$file_tmp = $file['tmp_name'];
$file_size = $file['size'];
$file_error = $file['error'];
$file_ext = strtolower(end(explode('.', $file_name)));
$allowed_ext = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($file_ext, $allowed_ext)) {
if ($file_error === 0) {
if ($file_size <= 2097152) { // 文件大小为2MB
$file_new_name = uniqid('', true) . '.' . $file_ext;
$file_destination = 'uploads/' . $file_new_name;
if (move_uploaded_file($file_tmp, $file_destination)) {
echo "文件上传成功: " . $file_destination;
} else {
echo "文件上传失败。";
}
} else {
echo "文件大小不能超过2MB。";
}
} else {
echo "错误:" . $file_error;
}
} else {
echo "不支持的文件类型。";
}
} else {
echo "没有文件被上传。";
}
}
?>
这段代码检查了文件是否存在、是否为允许的文件类型、文件大小是否符合要求,并尝试将文件移动到服务器上的指定目录。
4. 图片插入数据库
<?php
// 假设已经连接到数据库
$db = new mysqli('localhost', 'username', 'password', 'database');
if ($db->connect_error) {
die("连接失败: " . $db->connect_error);
}
$stmt = $db->prepare("INSERT INTO images (name, path) VALUES (?, ?)");
$stmt->bind_param("ss", $file_new_name, $file_destination);
$stmt->execute();
$stmt->close();
$db->close();
?>
这段代码使用预处理语句将文件名和路径插入到数据库的 images 表中。
5. 显示图片
<?php
// 假设已经连接到数据库
$db = new mysqli('localhost', 'username', 'password', 'database');
$stmt = $db->prepare("SELECT name, path FROM images");
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo '<img src="' . $row['path'] . '" alt="' . $row['name'] . '" />';
}
$stmt->close();
$db->close();
?>