My requirement is, I should send a 10MB zip file to the client with a restful service. I found the code in forums that sending a StreamingOutput
object is the better way, but how can I create a StreamingOutput
object in the following code:
@Path("PDF-file.pdf/") @GET @Produces({"application/pdf"}) public StreamingOutput getPDF() throws Exception { return new StreamingOutput() { public void write(OutputStream output) throws IOException, WebApplicationException { try { //------ } catch (Exception e) { throw new WebApplicationException(e); } } }; }
In this article, I will use a demo Web API application in ASP.NET Core to show you how to transmit files through an API endpoint. In the final HTML page, end users can left-click a hyperlink to download the file or right-click the link to choose “ Save Link As ” in the context menu and save the file.
Use the File transfer REST API to upload and download files using HTTP or HTTPS as the transport protocol and to list the contents of a directory. Uploads a file to any back-end application that supports REST APIs over HTTP or HTTPS protocol.
Its the better way and easy way for file dowload.
private static final String FILE_PATH = "d:\\Test2.zip"; @GET @Path("/get") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response getFile() { File file = new File(FILE_PATH); ResponseBuilder response = Response.ok((Object) file); response.header("Content-Disposition", "attachment; filename=newfile.zip"); return response.build(); }
For your code as you asked:
@GET @Path("/helloWorldZip") @Produces(MediaType.APPLICATION_OCTET_STREAM) public StreamingOutput helloWorldZip() throws Exception { return new StreamingOutput(){ @Override public void write(OutputStream arg0) throws IOException, WebApplicationException { // TODO Auto-generated method stub BufferedOutputStream bus = new BufferedOutputStream(arg0); try { //ByteArrayInputStream reader = (ByteArrayInputStream) Thread.currentThread().getContextClassLoader().getResourceAsStream(); //byte[] input = new byte[2048]; java.net.URL uri = Thread.currentThread().getContextClassLoader().getResource(""); File file = new File("D:\\Test1.zip"); FileInputStream fizip = new FileInputStream(file); byte[] buffer2 = IOUtils.toByteArray(fizip); bus.write(buffer2); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With