您好我正在使用以下代码使用java从postgresql bytea中检索文件, 但在文件中我得到的数字如314530413142313141
File file = new File("c:/test.doc");
FileOutputStream fos = new FileOutputStream(file);
ResultSet rs = st.executeQuery("SELECT * FROM test_bytea where id=" + 1);
if (rs != null) {
while (rs.next()) {
byte[] fileBytes = new byte[1024];
InputStream is = rs.getBinaryStream("type_file");
while (is.read(fileBytes) > 0) {
fos.write(fileBytes);
}
// use the stream in some way here
}
rs.close();
}
请告诉我代码中出了什么问题?
答案 0 :(得分:1)
数据被转义(以\ x开头,然后是每个字节的十六进制两个字符)这是来自bytea字段的内容。在将其存储在文件中之前,你需要先将其取消。
答案 1 :(得分:0)
您可以使用Spring
:
ResultSet rs = st.executeQuery("SELECT * FROM test_bytea where id=" + 1);
if (rs != null) {
LobHandler lobHandler = new DefaultLobHandler();
byte[] myFile = lobHandler.getBlobAsBytes(rs, "type_file"));
//....