2010-04-28 161 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