2015-01-06 2 views
0

Hibernate을 통해 MySQL 5.5 데이터베이스에 이미지를 저장하고 자바에서 byte[], 데이터베이스에서 blob으로로드합니다. 그럼에도 불구하고 jsp에 표시 할 수 없습니다.jsp에서 BLOB 이미지를 표시 할 수 없습니다.

내 컨트롤러 : 두 요소가 아무것도 표시되지 않습니다 JSP에서 다음

@RequestMapping(value = "/productPicture/{productPictureId}/edit", method = RequestMethod.GET) 
public String productPictureEditGET(@PathVariable("productPictureId") int productPictureId, HttpServletRequest request, Model model) { 

    ProductPictureFormBO productPicture = productPictureService.getById(productPictureId, ProductPictureFormBO.class, ProductPictureEntity.class); 

    byte[] encoded=org.apache.commons.codec.binary.Base64 
      .encodeBase64(productPicture.getPicture()); 
    String encodedString = new String(encoded); 

    model.addAttribute("image",encodedString); 
    model.addAttribute("productPicture", productPicture); 

    return "productPicture/editView"; 
} 

과 ... : JSP에서

<img src="data:image/jpeg;base64,${image}" alt="..." width="200" height="200">` 
    <img src="data:image/jpeg;base64,${productPicture.picture}" width="200" height="200">` 

결과 :

<img src="data:image/jpeg;base64,MTA4ODg4MTdfMTAyMDM1NjkyNTEzMzQ1MThfNzg0MzE4ODI3Mjc5Mjk0NTQ3MF9uLmpwZw==" width="200" height="200"> 
<img src="data:image/jpeg;base64,[[email protected]" width="200" height="200"> 

어떤 생각이 무엇을 나는 그것을 놓치고 고치는 법?

+0

결과 HTML에 실제로 생성되는 내용은 무엇입니까? –

+0

아마도 '이미지'안에 무엇이 있는지 말해 주어야합니다 (너무 크지 않다고 가정). 또는 생성 된 DOM을 보여주는 스크린 샷을 공유하십시오. –

+0

내 게시물을 업데이트했습니다 ... – Dworza

답변

2

데이터 URI 스키마는 파일 이름을 나타내는 일부 문자열이 아니라 이미지의 내용을 나타내야합니다. 여기

,

<img src="data:image/jpeg;base64,MTA4ODg4MTdfMTAyMDM1NjkyNTEzMzQ1MThfNzg0MzE4ODI3Mjc5Mjk0NTQ3MF9uLmpwZw==" width="200" height="200"> 

이 base64로 인코딩 된 모든 이미지 내용을 나타내지 않는 10888817_10203569251334518_7843188272792945470_n.jpg의 가치,하지만 분명히 이미지의 파일 이름입니다. 분명히 ProductPicture#getPicture()은 이미지의 내용 대신 유일한 파일 이름을 byte[]으로 반환합니다.

그래서 이미지 내용을 DB에 저장하는 대신 이미지의 파일 이름 만 저장하거나 잘못된 모델 값을 사용했습니다 (파일 이름을 저장하는 것이 무엇인지 궁금 하긴하지만). String 대신에 byte[]으로 직접 입력하십시오.

+0

네, 파일 이름이 저장되었습니다. – Dworza

관련 문제