file downloading in restful web services

后端 未结 1 412
花落未央
花落未央 2020-11-28 08:29

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 b

相关标签:
1条回答
  • 2020-11-28 08:57

    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();
                }
            }
        };
    }
    
    0 讨论(0)
提交回复
热议问题