gpt4 book ai didi

java - PostgreSQL 从数据库中获取图像

转载 作者:行者123 更新时间:2023-11-29 14:24:21 24 4
gpt4 key购买 nike

我有一些 Java 代码可以从数据库中获取图像并将其保存到文件中,但是,当我在除 Photoshop 之外的所有程序中打开它时,我会收到类似于以下内容的错误:

“它可能已损坏或使用预览无法识别的文件格式。” - 这个特别的是来自 MAC 的预览。我从中提取的数据库是 PostgreSQL,列是 bytea。

我的代码如下:

public static void main(String[] args) throws Exception {
Connection conn = null;
try {
conn = ConnectionManager.getConnection();

String sql = "SELECT content from asset ";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {

File image = new File("/Users/esklein/testing"+UUID.randomUUID()+".jpg");
FileOutputStream fos = new FileOutputStream(image);

byte[] buffer = new byte[256];

//
// Get the binary stream of our BLOB data
//
InputStream is = resultSet.getBinaryStream("content");
while (is.read(buffer) > 0) {
fos.write(buffer);
}

fos.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null && !conn.isClosed()) {
conn.close();
}
}
}

有什么想法为什么这不会吐出可以在任何文件中打开的图像?谢谢

最佳答案

while (is.read(buffer) > 0) {

您假设读取操作总是填满整个缓冲区。但是如果数据大小是1001字节,缓冲区大小是1000字节,那么最后一次读取只会得到一个字节。需要查看实际读取的字节数,然后

fos.write(buffer, 0, bytesRead)

关于java - PostgreSQL 从数据库中获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com