You need to do two steps to download a file from java restful web services.
- Annotate your service method with @Produces annotation. This annotation should have the file MIME type as a value. For example, if you are downloading pdf file then MIME type should be "application/pdf", in case if you are downloading png image file, then MIME type should be "image/png".
- In the Response header, set “Content-Disposition” details, which helps to prompt download box on browser.
Here is the service class to download file:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.goodinjava.restful; | |
import java.io.File; | |
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("/download") | |
public class RestDownloadService { | |
@GET | |
@Path("/service-record") | |
@Produces("application/pdf") | |
public Response getFile() { | |
File file = new File("C:\goodinjava\employee_1415.pdf"); | |
ResponseBuilder response = Response.ok((Object) file); | |
response.header("Content-Disposition", | |
"attachment; filename=\"employee_1415.pdf\""); | |
return response.build(); | |
} | |
} |