3

嗨,我正在使用以下代码使用 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();
        }    

请让我知道我的代码出了什么问题?

4

2 回答 2

1

您可以使用以下命令代替手动操作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"));
    //....
于 2013-04-08T15:53:40.167 回答
1

数据被转义(以 \x 开头,然后是每个字节的十六进制两个字符)这是来自 bytea 字段的内容。您需要在将其存储在文件中之前对其进行转义。

于 2012-10-01T13:24:06.117 回答