3

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);
        }
    }
}

そのエラーを解決するにはどうすればよいですか?

4

1 に答える 1

0

どの行が例外をスローしていますか? 一般的に、コードは正しいように見えます。いくつかのアイデア: このコードを 2 回繰り返している可能性があります (結果セットに 2 つ以上の結果が含まれています)。また、出力ストリームを取得する前に contentType を設定してみてください。

于 2012-12-28T14:08:15.970 に答える