mysql图片的存储和读取
时间: 2023-09-04 17:11:03 浏览: 44
在 MySQL 中存储图片通常有两种方式:将图片存储在文件系统中并在数据库中保存其路径,或者将图片以二进制形式存储在数据库中。
#### 将图片存储在文件系统中
1. 创建一个表,用于保存图片信息,包括文件名、文件大小、文件类型、文件路径等字段。
```sql
CREATE TABLE images (
id INT AUTO_INCREMENT PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
filesize INT NOT NULL,
filetype VARCHAR(255) NOT NULL,
filepath VARCHAR(255) NOT NULL
);
```
2. 将图片上传到服务器的某个目录下,同时将图片的路径保存到数据库中。
```sql
INSERT INTO images (filename, filesize, filetype, filepath)
VALUES ('test.jpg', 10240, 'image/jpeg', '/var/www/images/test.jpg');
```
3. 显示图片时,直接通过URL访问服务器上的图片路径即可。
#### 将图片以二进制形式存储在数据库中
1. 创建一个表,用于保存图片信息,包括文件名、文件大小、文件类型等字段。
```sql
CREATE TABLE images (
id INT AUTO_INCREMENT PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
filesize INT NOT NULL,
filetype VARCHAR(255) NOT NULL,
data MEDIUMBLOB NOT NULL
);
```
2. 将图片以二进制形式保存到数据表中。
```sql
INSERT INTO images (filename, filesize, filetype, data)
VALUES ('test.jpg', 10240, 'image/jpeg', LOAD_FILE('/var/www/images/test.jpg'));
```
3. 显示图片时,从数据库中读取二进制数据,并将其转换为图片格式。
```php
<?php
$id = 1;
$result = mysqli_query($conn, "SELECT * FROM images WHERE id=$id");
$row = mysqli_fetch_array($result);
header("Content-type: {$row['filetype']}");
echo $row['data'];
?>
```