RESTful produces binary file
18,057
If it will return any file, you might want to make your method more "generic" and return a javax.ws.rs.core.Response which you can set the Content-Type header programmatically:
@Path("/download/")
@GET
public javax.ws.rs.core.Response getFile() throws Exception {
if (/* want the pdf file */) {
return Response.ok(new File(/*...*/)).type("application/pdf").build();
}
/* default to xml file */
return Response.ok(new FileInputStream("custom.xml")).type("application/xml").build();
}
Author by
Marco Aviles
Java and Ruby developer. Always looking to learn more
Updated on July 19, 2022Comments
-
Marco Aviles almost 2 years
I'm new using CXF and Spring to make RESTful webservices.
This is my problem: I want to create a service that produces "any" kind of file(can be image,document,txt or even pdf), and also a XML. So far I got this code:
@Path("/download/") @GET @Produces({"application/*"}) public CustomXML getFile() throws Exception;
I don't know exactly where to begin so please be patient.
EDIT:
Complete code of Bryant Luk(thanks!)
@Path("/download/") @GET public javax.ws.rs.core.Response getFile() throws Exception { if (/* want the pdf file */) { File file = new File("..."); return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM) .header("content-disposition", "attachment; filename =" + file.getName()) .build(); } /* default to xml file */ return Response.ok(new FileInputStream("custom.xml")).type("application/xml").build(); }