如何将byte []数组从InputStream传递给OutputStream?

时间:2011-06-22 10:10:45

标签: java java-ee inputstream outputstream

我已将image as mediumblob存储在数据库

在我的Image bean类中,我将photo属性存储为byte [],如

private byte[] photo;

// getter and setter method for photo

我从数据库中获取图像,用于存储在Image bean类

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 个答案:

答案 0 :(得分:1)

您的output流可以是response.getOutputStream()直接返回的流。只需确保在将所有数据写入其后清除流。

如果您的servlet容器没有缓冲输出流,您可以考虑将输出包装在BufferedOutputStream中。