If one of you RESTful Web Service Endpoints built with Jersey JAX-RS needs to initiate image download, you can use the following example to let user download an image stored on your server when they access a certain web service end point.
The below example downloads a PNG image specified by @Produces(“image/png”) but you can easily edit it and make it download image/jpg for example.
To make the image file begin downloading we need to load it into the File object and then return back a Response object with Content-Disposition added to a Response header.
JAX-RS Image Download Example
The below code example will trigger image downloading when users access /media/company-logo Web Service End Point via HTTP GET Request.
import java.io.File;
import java.io.IOException;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
@Path("/media")
public class MediaEntryPoint {
@GET
@Path("company-logo")
@Produces("image/png")
public Response getCompanyLogo() throws IOException {
String filePath = "/media/images/company-logo.png";
File file = new File(filePath);
ResponseBuilder response = Response.ok((Object) file);
response.header("Content-Disposition",
"attachment; filename=company-logo.png");
return response.build();
}
}
If you are working with JAX-RS and Jersey check out these short tutorials with code example on how to build RESTFul Web Services with JAX-RS and Jersey.