请帮助我并举例说明将图像保存为字节数组并检索它们。我正在使用Java和postgre sql是我使用的数据库。\
if (this.files && this.files[0]) {
var FR= new FileReader();
FR.onload = function(e) {
imageArray[index] = e.target.result;
FR.readAsDataURL( this.files[0] );
}
});
这用于获取图像..
imageByte1 = javax.xml.bind.DatatypeConverter.parseBase64Binary(base64Image);
然后回过头来,
new sun.misc.BASE64Encoder().encode(item.getImage1())
这是用来转换。但是out out与我保存的不同。
答案 0 :(得分:0)
您可以通过外观将二进制文件存储为DB中的base64。使用一对不匹配的输入和输出例程,其中一个甚至不是公共API(com.sun.
空间)。
请不要。
使用JDBC对java.sql.Types.BLOB
blob,java.sql.PreparedStatement
和绑定参数的支持。请。该列的相应PostgreSQL数据类型应为bytea
。
答案 1 :(得分:0)
在PostGres中,字节数组(字节[])的数据类型为 bytea 。因此,请使用数据类型创建列。
保存:
File file = new File("myimage.gif");
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES (?, ?)");
ps.setString(1, file.getName());
ps.setBinaryStream(2, fis, (int)file.length());
ps.executeUpdate();
ps.close();
fis.close();
获取:
PreparedStatement ps = conn.prepareStatement("SELECT img FROM images WHERE imgname = ?");
ps.setString(1, "myimage.gif");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
byte[] imgBytes = rs.getBytes(1); OR byte []out = (byte[])(rs.getObject(1));
// use the data in some way here
}
rs.close();
ps.close();