java实现本地读取图片存储到数据库中并在html网页显示
时间: 2023-06-13 15:02:58 浏览: 178
可以按照以下步骤实现:
1. 使用Java读取本地图片,可以使用如下代码:
```java
File file = new File("path/to/image/file");
byte[] imageData = Files.readAllBytes(file.toPath());
```
2. 将读取的图片数据存储到数据库中,可以使用如下代码:
```java
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");
PreparedStatement stmt = conn.prepareStatement("INSERT INTO images (name, data) VALUES (?, ?)");
stmt.setString(1, "image_name");
stmt.setBytes(2, imageData);
stmt.executeUpdate();
```
在上面的代码中,`images`是数据库中存储图片的表名,`name`和`data`分别是存储图片名称和数据的列名,`image_name`是图片的名称。
3. 在HTML网页中显示图片,可以使用以下代码:
```html
<img src="data:image/png;base64,base64_encoded_image_data" alt="image_name">
```
其中,`base64_encoded_image_data`是从数据库中读取出来的图片数据进行Base64编码后的字符串,可以使用如下代码进行编码:
```java
String base64ImageData = Base64.getEncoder().encodeToString(imageData);
```
完整的代码示例如下:
```java
import java.io.File;
import java.nio.file.Files;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Base64;
public class ImageDemo {
public static void main(String[] args) throws Exception {
// 读取图片数据
File file = new File("path/to/image/file");
byte[] imageData = Files.readAllBytes(file.toPath());
// 存储图片数据到数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");
PreparedStatement stmt = conn.prepareStatement("INSERT INTO images (name, data) VALUES (?, ?)");
stmt.setString(1, "image_name");
stmt.setBytes(2, imageData);
stmt.executeUpdate();
// 从数据库中读取图片数据并进行Base64编码
stmt = conn.prepareStatement("SELECT data FROM images WHERE name = ?");
stmt.setString(1, "image_name");
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
byte[] imageDataFromDb = rs.getBytes("data");
String base64ImageData = Base64.getEncoder().encodeToString(imageDataFromDb);
System.out.println("<img src=\"data:image/png;base64," + base64ImageData + "\" alt=\"image_name\">");
}
rs.close();
stmt.close();
conn.close();
}
}
```
在上面的代码示例中,`images`表需要提前创建好,可以使用如下SQL语句创建:
```sql
CREATE TABLE images (
name VARCHAR(255) PRIMARY KEY,
data LONGBLOB NOT NULL
);
```
阅读全文