PHP 图片的二进制存取 (Mysql)
在网站开发中,图片的上传和存储是必不可少的一步。本文将介绍如何使用PHP将图片存储到MySQL数据库中并在数据库中读取二进制图片数据并将其显示到网页上。
1. 创建数据库表结构
首先需要在MySQL数据库中创建相应的表结构来存储图片二进制数据。创建一个表并命名为`image_table`,具体的表结构如下:
CREATE TABLE `image_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_name` varchar(255) NOT NULL,
`image_data` longblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在这个表中,我们定义了三个字段:
- id:主键,自增长的整数。
- image_name:图片的名称,VARCHAR类型。
- image_data:存储二进制图片数据的字段,LONGBLOB类型。
2. 图片存储逻辑实现
在PHP中,我们可以使用`file_get_contents()`函数读取图片二进制数据并将其存储到MySQL数据库中。以下是存储图片的一个PHP函数:
function insertImage($image_path, $image_name) {
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
$image_data = addslashes(file_get_contents($image_path));
$query = "INSERT INTO image_table (image_name, image_data) VALUES ('$image_name', '$image_data')";
$result = mysqli_query($conn, $query);
mysqli_close($conn);
return $result;
}
这个函数接受两个参数:图片的路径和图片名称。首先,我们使用`addslashes()`函数对图片二进制数据进行转义,然后将数据插入到`image_table`表中。
3. 从数据库中读取图片并显示
我们可以使用PHP将二进制数据从数据库中读取出来并显示在网页上。以下是一个显示图片的PHP函数:
function displayImage($id) {
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
$query = "SELECT image_data FROM image_table WHERE id=$id";
$result = mysqli_query($conn, $query);
header("Content-type: image/jpeg");
echo mysqli_fetch_array($result)['image_data'];
mysqli_close($conn);
}
这个函数接受一个参数,即图片的ID。它首先从`image_table`表中查找对应的图片数据,然后通过`header()`函数设置响应头为图片类型,并将图片数据直接输出到网页上。
4. 如何在HTML中显示图片
最后一步是在HTML中将图片显示出来。为了在HTML中显示图片,我们需要使用``标签。例如:
<img src="display_image.php?id=1" alt="image">
在这个例子中,我们使用了一个PHP脚本`display_image.php`来获取图片数据并将其显示在网页上。
总结
本文介绍了如何使用PHP将二进制图片数据存储到MySQL数据库中,并通过PHP从数据库中读取图片并将其显示在网页上。使用这种方法,我们可以在不使用第三方存储服务的情况下,将图片存储到自己的服务器上。