2012-12-28 3 views
3

블롭 데이터 &을 읽으려면 다음 코드를 사용하여 결과를 이미지로 표시하십시오. 그러나 오류 java.lang.IllegalStateException: getWriter() has already been called for this response가 나타납니다.LongBlob 데이터를 이미지로 표시

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

오류를 해결하려면 어떻게해야합니까?

+0

이 줄에 – KNU

답변

0

예외를 throw하는 행은 무엇입니까? 일반적으로 코드는 올바르게 보입니다. 두 가지 아이디어 만 있습니다. 이 코드를 두 번 반복하는 것일 수 있습니까? (결과 집합에 두 개 이상의 결과가 나타남)? 또한 출력 스트림을 가져 오기 전에 contentType을 설정해보십시오.

+0

테이블의 DDL 스크립트를 친절하게 공유합니다. errorServletOutputStream을 얻습니다. sout = response.getOutputStream(); – Shafiq

+0

당신은 이것을 호출하는 전체 메소드를 게시합니까? OutputStream을 얻으려고 시도하기 전에 응답에 뭔가를 보내고있을 수 있습니까? –

관련 문제