2010-04-28 110 views
2

我想知道如何從郵件服務器上根據內容配置從JSP頁面下載任何文件作爲附件如何從JSP下載附件文件

我想在JSP頁面上創建一個鏈接,並通過點擊該鏈接用戶可以從郵件服務器下載文件。該鏈接應爲內容處理的附件類型。我怎麼能在JSP中做到這一點?

回答

0

我建議你稍微打破這個問題。

你知道如何從一個普通的java程序中訪問附件嗎?如何與郵件服務器等接口?如果您知道這一點,通過jsp提供可下載格式的附件應該很簡單。雖然,我強烈建議你做一個常規的servlet,因爲你可能沒有太多的使用jsp的額外機制。

只要確保你設置根據在下載這些東西的內容類型:

在JSP中:<%@page contentType="image/png" %>

在的servelt:response.setContentType("image/png");

4

不要使用這樣的JSP,它是食譜因爲在使用它來傳輸二進制文件時遇到麻煩,因爲<% %>標記之外的所有空白都將被打印到響應中,這隻會破壞二進制內容。您只需在JSP中放置一個類似的HTML鏈接,然後使用servlet類執行所有處理和流式處理任務。要設置響應標題,只需使用HttpServletResponse#setHeader()

response.setHeader("Content-Disposition", "attachment;filename=name.ext"); 

你可以在這裏找到它正是這樣做的一個基本的servlet例如:FileServlet

+0

HttpServletResponse拼錯了。 – 2012-06-04 16:09:36

+1

@Larry:固定:) – BalusC 2012-06-04 16:10:16

0
URL url = new URL("http://localhost:8080/Works/images/abt.jpg"); 

      //for image 
      response.setContentType("image/jpeg"); 
      response.setHeader("Content-Disposition", "attachment; filename=icon" + ".jpg"); 

      //for pdf 
      //response.setContentType("application/pdf"); 
      //response.setHeader("Content-Disposition", "attachment; filename=report" + ".pdf"); 

      //for excel sheet 
      // URL url = new URL("http://localhost:8080/Works/images/address.xls"); 
      //response.setContentType("application/vnd.ms-excel"); 
      //response.setHeader("Content-disposition", "attachment;filename=myExcel.xls"); 


      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(); 
+1

你爲什麼不用''?你的評價不必要的過分複雜。 – BalusC 2012-05-28 13:13:51