Nipun
Nipun

Reputation: 4319

Sending Images to the client from tomcat server

I am building a framework for e-commerce site. I have used jersey to create REST APIs. I need to send images to the clients as per the request. How can I do so from my application server as Tomcat and jersey as REST API?

Since I am new to this, I have no clue how to send images to an Android client when they are shown as item.

Upvotes: 0

Views: 757

Answers (1)

Mahantesh M Ambi
Mahantesh M Ambi

Reputation: 796

Every resource is identified by the URI, client will ask for a particular image or a bunch of images by quering the URL, So you just need to expose a service, following service is an example to send single image to client.

@GET
@Path("/images/{imageId}")
@Produces("image/png")
public Response downloadImage(@PathParam("imageId") String imageId) {
    MultiMediaDB imageDb = new MultiMediaDB();
    String filePath = imageDb.getImage(imageId);
    File file = new File(filePath);
    ResponseBuilder response = Response.ok((Object) file);
    response.header("Content-Disposition",
            "attachment; filename=\"fileName.png\"");
    return response.build();
}

MultiMediaDB is my custom class to get the file location from the DB, you can hardcode it as of now for testing purpose like D:\server_image.png. You need to mention Content-Disposition as an attachment so that file will not be downloaded, instead attached to the form.

In android you just need to read inputstream from a HttpURLConnection object and send that to bitmap as shown below

URL url = new URL(BaseUrl + "/images/" + imageId);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
iStream = urlConnection.getInputStream();
bitmap = BitmapFactory.decodeStream(iStream);

The you can set that bitmap to imageview or what ever you have as a container.

Upvotes: 1

Related Questions