【问题标题】:Displaying LongBlob data as image将 LongBlob 数据显示为图像
【发布时间】:2012-12-13 18:32:04
【问题描述】:

我有以下代码来读取 blob 数据并将结果显示为图像。但我收到了错误java.lang.IllegalStateException: getWriter() has already been called for this response

while (rs2.next()) {
    Blob image = null;
    byte[] imgData = null;
    j++;
    qPaperOptions = rs2.getString(1);
    int qDetailId = rs2.getInt(2);
    image = rs2.getBlob(5);

    ServletOutputStream sout = response.getOutputStream();
    // o.close();
    // imgData = image.getBytes(1,(int)image.length());
    // Blob cnt_data=rs2.getBlob("cimg.ctn_data");
    if (image != null) {
        // imgData = image.getBytes(1,(int)image.length());
        response.setContentType("image/gif");
        InputStream in = image.getBinaryStream();
        int length = (int) image.length();
        int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];
        while ((length = in.read(buffer)) != -1) {
            sout.write(buffer, 0, length);
        }
    }
}

我可以做些什么来解决这个错误?

【问题讨论】:

  • 请分享表格的DDL脚本

标签: java blob


【解决方案1】:

哪一行抛出异常?一般来说,代码看起来是正确的。只是几个想法: 是不是您要迭代此代码两次(结果集中有两个或更多结果)?另外,请尝试在获取输出流之前设置 contentType。

【讨论】:

  • 在这一行我得到 errorServletOutputStream sout = response.getOutputStream();
  • 你发布调用这个的整个方法?是不是您在尝试获取 OutputStream 之前向响应发送了一些东西?
猜你喜欢
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2020-03-22
  • 2014-08-09
  • 2017-12-27
  • 1970-01-01
相关资源
最近更新 更多