Преобразуйте MySql InputStream в byte []

0

Я храню некоторые изображения в базе данных MySQL, используя

ps.setBinaryStream(1, photo);

где photo - InputStream.

Когда я читаю изображение из базы данных, мне нужно преобразовать его в byte[]. Как я могу это сделать?

Теги:
inputstream

2 ответа

1

Вы можете попробовать что-то вроде:

        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

  • 1
    Вы действительно пробовали это? С большими изображениями? Существует ограничение на размер байтовых массивов, которые вы можете записать в FileOutputStream по крайней мере, с некоторыми JVM.
1

Все, что вам нужно сделать, это утверждение и набор результатов. Что-то вроде этого:

Statement myStatement=(Statement) myConnection.createStatement();
ResultSet myRS=myStatement.executeQuery(mySQLstring);
byte[] photo = myRS.getBytes("myphotoColumnLabel");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню