java后端接收照片并且转为blob存入数据库中
时间: 2024-03-27 16:40:40 浏览: 101
Java从数据库中读取Blob对象图片并显示的方法
首先,你需要在前端将照片转为二进制数据。可以通过以下方式实现:
```javascript
// 获取照片文件
const file = document.getElementById('photo').files[0];
// 读取文件并转为二进制数据
const reader = new FileReader();
reader.onload = (event) => {
const binaryData = event.target.result;
// 发送请求将二进制数据传给后端
};
reader.readAsBinaryString(file);
```
在后端,你可以使用Java的JDBC API将二进制数据存入数据库中。假设你使用的是MySQL数据库,下面是一个将二进制数据存入Blob类型字段的示例代码:
```java
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class PhotoUploader {
public static void main(String[] args) {
// 连接数据库
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "password";
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
return;
}
// 获取二进制数据
InputStream is = request.getInputStream();
// 存入数据库
PreparedStatement ps = null;
try {
ps = conn.prepareStatement("INSERT INTO photos (photo) VALUES (?)");
ps.setBinaryStream(1, is, is.available());
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try { ps.close(); } catch (Exception e) {}
try { conn.close(); } catch (Exception e) {}
}
}
}
```
在上面的代码中,我们使用`ps.setBinaryStream()`方法将二进制数据存入Blob类型字段。注意,`is.available()`方法返回的是二进制数据的长度,所以我们可以直接将`InputStream`对象传给`setBinaryStream()`方法。最后,别忘了关闭`PreparedStatement`和`Connection`对象。
阅读全文