davidad
davidad

Reputation: 137

display image in JSP using Spring

I'm trying to display an image in jsp injected. I upload and I store the image in the database, but do not know how retrieve and display in jsp. My controller:

@RequestMapping(value = "/ver2", method = RequestMethod.GET)
public void ver2(HttpSession session, HttpServletResponse response) {
    OutputStream oImage;
    Item item10 = itemRepository.findOne(11);

    try {
        byte[] photo = item10.getImagen();
        response.setContentType("image/jpeg, image/jpg, image/png, image/gif");
        oImage = response.getOutputStream();
        oImage.write(photo);
        oImage.flush();
        oImage.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

With this code, i show a full screen, and i need inject in jsp. Any idea?

Thanks

Upvotes: 1

Views: 1862

Answers (1)

Paulius Matulionis
Paulius Matulionis

Reputation: 23415

You need to return Base64 encoded image bytes in String to your JSP page and use:

<img src="data:image/png;base64,${yourBase64EncodedBytesString}"/>

to display your image.

Use Apache Commons Codec to do Base64 encodings.

So for e.g.:

String yourBase64EncodedBytesString = new String(Base64.encodeBase64(content));

Set it for e.g. as a request attribute:

request.setAttribute("yourBase64EncodedBytesString", yourBase64EncodedBytesString);

And retrieve in JSP page:

<img src="data:image/png;base64,${requestScope['yourBase64EncodedBytesString']}"/>

Upvotes: 1

Related Questions