PHP 图片的二进制存取 (Mysql)

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从数据库中读取图片并将其显示在网页上。使用这种方法,我们可以在不使用第三方存储服务的情况下,将图片存储到自己的服务器上。

后端开发标签