2012-04-25 77 views
0

嗨我已經嘗試了以下java代碼,如果我將它們用作java應用程序,但是當我在我的servlet頁面中使用相同的代碼時,它們不工作意味着我無法下載文件。請建議我應該做什麼修改,以便我可以使用Servlet下載文件。使用servlet下載文件

a。

java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL("http://169.254.174.150:8084/WebApplication1/files/check.txt").openStream()); 
    File f1 = new File("D:\\a.txt"); 
    java.io.FileOutputStream fos = new java.io.FileOutputStream(f1); 
    java.io.BufferedOutputStream bout = new BufferedOutputStream(fos, 1024); 
    byte data[] = new byte[1024]; 
    while (in.read(data, 0, 1024) >= 0) { 
     bout.write(data); 
    } 
    bout.close(); 
    in.close(); 
} 

b。 http://www.javabeat.net/examples/2012/04/13/download-file-from-http-https-server-using-java/

回答

0

一個像你所指定的一個老JavaBeat的例子可以發現here

我找到其他的解決方案太多,但這個似乎是最全面的。

0

幾件事,將它寫入一個文件的插入嘗試直接將數據寫入響應。在寫入數據之前,您必須將以下參數設置爲響應

 //byte[] filedata = ; intialize your file contents 
     String filename = "a.txt"; 

     //  set the header information in the response. 
     res.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\";"); 
     res.setContentType("application/x-unknown"); 
     ByteArrayInputStream byteStream = new ByteArrayInputStream(filedata); 
     BufferedInputStream bufStream = new BufferedInputStream(byteStream); 
     ServletOutputStream responseOutputStream = res.getOutputStream(); 
     int data = bufStream.read(); 
     while (data != -1) 
     { 
      responseOutputStream.write(data); 
      data = bufStream.read(); 
     } 

     bufStream.close(); 
     responseOutputStream.close(); 

其中res是一個HttpServletResponse對象。在此之後,您可以將數據寫入responseOutputStream。