2012-05-22 93 views
2
URL url = new URL("http://localhost:8080/Work/images/abt.jpg"); 

InputStream in = new BufferedInputStream(url.openStream()); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
byte[] buf = new byte[1024]; 
int n=0; 
while (-1!=(n=in.read(buf))) 
{ 
    out.write(buf, 0, n); 
} 
out.close(); 
in.close(); 
byte[] response1 = out.toByteArray(); 

FileOutputStream fos = new FileOutputStream("C://abt.jpg"); 
fos.write(response1); 
fos.close(); 
在此代碼

有在過去的3行在java中從web url下載圖片?

嚴重一些錯誤:Servlet.service()進行的servlet ImageDownloadServlet拋出異常java.io. FileNotFoundException異常:C:/abt.jpg(沒有這樣的文件或目錄)

我怎樣才能解決呢?

回答

3
String filePath = request.getParameter("action"); 
     System.out.println(filePath); 
     // URL url = new 
     // URL("http://localhost:8080/Works/images/abt.jpg"); 
     response.setContentType("image/jpeg"); 
     response.setHeader("Content-Disposition", "attachment; filename=icon" + ".jpg"); 
     URL url = new URL(filePath); 
     URLConnection connection = url.openConnection(); 
     InputStream stream = connection.getInputStream(); 

     BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream()); 
     int len; 
     byte[] buf = new byte[1024]; 
     while ((len = stream.read(buf)) > 0) { 
      outs.write(buf, 0, len); 
     } 
     outs.close(); 
    } 
3

也許嘗試切換C:/abt.jpgC:\\abt.jpg

+1

在Windows系統中,至少那些基於NT(如Windows NT,XP,Vista和Windows 7),斜槓( 「/」 )是一個有效的文件路徑組件分隔符,可以用來代替官方反斜槓(「\」)。但是,正斜槓並不需要轉義。 –

+0

經過測試,你是對的。奇怪的是,它可以同時工作。 (「//」和「/」) – CosminO

2

("C://abt.jpg");

試圖扭轉斜線

("C:\\abt.jpg");

我擡頭一example link到FOS到C盤爲例,演示了他們另一種方法。

+0

在這裏是第一個:) – CosminO

+0

在Windows系統上,至少基於NT(即Windows NT,XP,Vista和7),正斜槓(「/」)是有效的文件路徑組件分隔符,可以用來代替官方反斜槓(「\」)。但是,正斜槓並不需要轉義。 –

3

嘗試使用File.pathSeparator而不是斜槓。

0
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, 
       IOException, MalformedURLException { 
     String filePath = request.getParameter("action"); 
     // String filename = "abt.jpg"; 
     System.out.println(filePath); 
     URL url = new URL("http://localhost:8080/Works/images/abt.jpg"); 

     InputStream in = new BufferedInputStream(url.openStream()); 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     byte[] buf = new byte[1024]; 
     int n = 0; 
     while (-1 != (n = in.read(buf))) { 
      out.write(buf, 0, n); 
     } 
     out.close(); 
     in.close(); 
     byte[] response1 = out.toByteArray(); 

     FileOutputStream fos = new FileOutputStream("/home/user/Downloads/abt.jpg"); 
     fos.write(response1); 
     fos.close(); 

    } 

這一形象將在下載文件夾