Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

file downloading in restful web services

Tags:

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);         }      }   }; } 
like image 231
Rajesh Vaddepally Avatar asked Apr 11 '12 06:04

Rajesh Vaddepally


People also ask

How do I download a file using API?

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.

CAN REST API transfer files?

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.


1 Answers

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();             }         }     }; } 
like image 133
Naveenkumar K Avatar answered Sep 24 '22 14:09

Naveenkumar K