MySQL中实现图片上传的方法
随着互联网的发展,图片在我们生活和工作中的使用越来越广泛,比如产品图片、用户头像等。那么如何在MySQL中实现图片的上传呢?
一、创建表格
我们需要创建一个表格来存储图片,具体创建代码如下:
CREATE TABLE `images` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘ID’,
`title` varchar(50) NOT NULL COMMENT ‘标题’,
`image` blob NOT NULL COMMENT ‘图片’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=’图片表’;
二、HTML页面
在HTML页面上,我们需要添加上传图片的表单控件,代码如下:
在这个表单中,我们使用了multipart/form-data编码格式,这样才能正确地上传二进制文件。
三、上传图片
接下来,我们需要编写PHP脚本来实现图片的上传功能,代码如下:
if ($_FILES[“image”][“error”] == UPLOAD_ERR_OK) {
$title = $_FILES[“image”][“name”];
$image = file_get_contents($_FILES[“image”][“tmp_name”]);
$pdo = new PDO(“mysql:host=localhost;dbname=test”, “username”, “password”);
$stmt = $pdo->prepare(“INSERT INTO images(title, image) VALUES (?, ?)”);
$stmt->bindParam(1, $title);
$stmt->bindParam(2, $image, PDO::PARAM_LOB);
$stmt->execute();
echo “上传成功!”;
} else {
echo “上传失败!”;
}
?>
这段代码首先检查上传的文件是否有错误,如果没有错误则获取文件名和文件内容,并使用PDO连接到MySQL数据库,向images表格中插入一条记录。其中,我们使用了PDO::PARAM_LOB参数来表示图片是一个二进制大对象。
四、显示图片
在HTML页面上我们需要编写PHP脚本来显示图片,代码如下:
$pdo = new PDO(“mysql:host=localhost;dbname=test”, “username”, “password”);
$stmt = $pdo->prepare(“SELECT image FROM images WHERE id = ?”);
$stmt->bindParam(1, $_GET[“id”]);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
header(“Content-type: image/png”);
echo $row[“image”];
?>
在这个脚本中,我们先连接到数据库,然后根据图片的ID参数查询对应的图片内容,并输出HTTP头部,告诉浏览器这是一个PNG格式的图片。输出图片内容。
总结
通过以上的步骤,我们就可以很容易地实现在MySQL中上传和显示图片的功能了。当然,为了优化性能,我们可能还需要对图片进行压缩、缩放等处理,但是基本的上传和显示功能已经具备了。