引言
一、环境准备
在开始之前,请确保以下环境已经准备就绪:
- PHP环境
- MySQL数据库
- 文件上传功能支持(如Apache或Nginx服务器)
二、图片上传
1. 创建HTML表单
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" value="上传图片" />
</form>
2. PHP上传处理
<?php
// 检查是否有文件被上传
if (isset($_FILES['image'])) {
$image = $_FILES['image'];
$file_name = $image['name'];
$file_tmp = $image['tmp_name'];
$file_size = $image['size'];
$file_error = $image['error'];
$file_ext = strtolower(end(explode('.', $file_name)));
$allowed_ext = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($file_ext, $allowed_ext) && $file_error === 0) {
// 设置图片上传路径
$upload_dir = "uploads/";
$file_new_name = uniqid('', true) . '.' . $file_ext;
$upload_path = $upload_dir . basename($file_new_name);
// 移动临时文件到指定路径
if (move_uploaded_file($file_tmp, $upload_path)) {
echo "文件已成功上传到: " . $upload_path;
} else {
echo "文件上传失败。";
}
} else {
echo "文件类型不允许或发生错误。";
}
}
?>
三、图片存储到MySQL数据库
1. 创建数据库表
CREATE TABLE images (
id INT AUTO_INCREMENT PRIMARY KEY,
file_name VARCHAR(255) NOT NULL,
file_path VARCHAR(255) NOT NULL
);
2. 保存图片信息
function saveImageToDB($db, $file_name, $file_path) {
$stmt = $db->prepare("INSERT INTO images (file_name, file_path) VALUES (?, ?)");
$stmt->bind_param("ss", $file_name, $file_path);
$stmt->execute();
$stmt->close();
}
3. 从数据库中检索图片
SELECT * FROM images;
<?php
$db = new mysqli("localhost", "username", "password", "database");
if ($db->connect_error) {
die("连接失败: " . $db->connect_error);
}
$result = $db->query("SELECT * FROM images");
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo '<img src="' . $row['file_path'] . '" alt="' . $row['file_name'] . '" />';
}
} else {
echo "没有找到任何图片。";
}
$db->close();
?>