Я храню некоторые изображения в базе данных MySQL, используя
ps.setBinaryStream(1, photo);
где photo
- InputStream
.
Когда я читаю изображение из базы данных, мне нужно преобразовать его в byte[]
. Как я могу это сделать?
Вы можете попробовать что-то вроде:
File file=new File("E:\\image1.png");
FileOutputStream fos=new FileOutputStream(file);
byte b[];
Blob blob;
PreparedStatement ps=con.prepareStatement("select * from image_table");
ResultSet rs=ps.executeQuery();
while(rs.next()){
blob=rs.getBlob("image");
b=blob.getBytes(1,(int)blob.length());
fos.write(b);
}
Максимальная длина типа Blob
- 64kb
Используйте более крупные типы, такие как mediumblob
или longblob
.
Вы также можете получить с помощью: inputStream imgStream = resultSet.getBinaryStream(1);
как вы сохранили изображение с помощью InputStream
Все, что вам нужно сделать, это утверждение и набор результатов. Что-то вроде этого:
Statement myStatement=(Statement) myConnection.createStatement();
ResultSet myRS=myStatement.executeQuery(mySQLstring);
byte[] photo = myRS.getBytes("myphotoColumnLabel");
FileOutputStream
по крайней мере, с некоторыми JVM.