MYSQL DB에 이미지를 MEDIUMBLOB로 저장하고 브라우저에 표시하는 웹 응용 프로그램을 만들고 있습니다.이미지를 표시 할 수 없습니다
PreparedStatement psmt = con.prepareStatement("SELECT pdfImage FROM pdfInfo WHERE pdfinfoid=?");
psmt.setString(1, what);
ResultSet rs1 = psmt.executeQuery();
while (rs1.next()) {
System.out.println("inside rs1.mext");
String imgLen = rs1.getString(1);
System.out.println(imgLen.length());
int len = imgLen.length();
System.out.println("length inside == " + len);
byte[] rb = new byte[len];
InputStream readImg = rs1.getBinaryStream(1);
InputStream inputStream = readImg;
int index = readImg.read(rb, 0, len);
System.out.println("index----------------" + index);
response.reset();
response.setHeader("Content-Length", String.valueOf(len));
response.setHeader("Content-disposition", "inline;filename=/file.png");
response.setContentType("image/png");
response.getOutputStream().write(rb, 0, len);
response.getOutputStream().flush();
}
문제는 로컬로 그리고 프로젝트를 실행할 때 이미지를 볼 수 있다는 것입니다. 문제는 하나의 이미지에만 있습니다.
출력 내용은 다음과 같습니다.
INFO: inside rs1.mext
INFO: 5942414
INFO: length inside == 5942414
INFO: index----------------5942414
INFO: leng here is 5942414
이 정보가 로컬 호스트에있는 경우, 나는 이미지, 내가 온라인이 프로젝트를 취할 때, 나는 이미지를 볼 수없는 오전을 볼 수 있습니다.
어디에서나 매개 변수를 설정해야 이미지를 볼 수 있습니까?
기타 sout 문은 이미지를 볼 수있는 아래와 같습니다. read
방법은 보장되지
int index = readImg.read(rb, 0, len);
당신이 요청하는 모든 데이터를 읽을 수 :
INFO: inside rs1.mext
INFO: 204999
INFO: length inside == 204999
INFO: index----------------204999
INFO: leng here is 204999
INFO: inside rs1.mext
INFO: 515274
INFO: length inside == 515274
INFO: index----------------515274
INFO: leng here is 515274
이미지가 데이터베이스에있는 이미지가 아닌 경로를 저장하고 모든 것이 더 원활하게 처리됩니다. – Ibu
@Ibu : 이것이 최선의 해결책이라는 것을 알고 있지만 문제는 코딩의 80 %를 완료하고 경로를 BLOB로 만드는 것입니다. 지루한. –