一、准备工作
在开始之前,请确保您已经具备以下条件:
- 安装并配置好PHP环境。
- 安装并配置好数据库(如MySQL)。
- 准备一个用于存放上传图片的目录,并确保该目录有写权限。
二、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语句,并将其执行。如果插入成功,我们将输出“新记录插入成功”,否则输出错误信息。