在宁静的Web服务中下载文件

我的要求是,我应该向客户发送一个10MB的zip文件,并提供宁静的服务。 我发现在发送StreamingOutput对象的论坛中的代码是更好的方法,但是如何在以下代码中创建StreamingOutput对象:

 @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); } } }; } 

它是文件下载的更好方法和简便方法。

 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(); } 

对于你问的代码:

 @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(); } } }; }