Как передать массив byte [] из InputStrem в OutputStream? - PullRequest
0 голосов
/ 22 июня 2011

Я сохранил свой image as mediumblob в базе данных

В моем классе bean-объектов Image у меня есть свойство photo в виде байта [], например

private byte[] photo;

// getter and setter method for photo

Я получаю изображение из базы данных, используя для храненияв Image bean class

image.setPhoto(resultset.getBinaryStreams(1));

тогда я получаю изображение в Servlet как:

InputStream input = null;
OutputStream output = null;
try {
    input = new ByteArrayInputStream(image.getPhoto());

    output = // What type of stream should I use here

    byte[] buffer = new byte[10240];
    int length;
    while ((length = input.read(buffer)) > 0) {
        output.write(buffer, 0, length);
    }
} finally {
    output.flush();
    input.close();
}

Вопросы:

  1. Что я должен написать в строке вывода впоказать фотографию, используя response.getOutputStream или что-то еще?
  2. Этот метод правильный или есть какой-то лучший способ?

1 Ответ

1 голос
/ 22 июня 2011

Ваш поток output может быть тем потоком, который возвращается response.getOutputStream() напрямую. Просто обязательно очистите поток после записи в него всех данных.

Если ваш контейнер сервлетов не буферизует выходные потоки, вы можете обернуть вывод в BufferedOutputStream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...