我想知道如何从邮件服务器上根据内容配置从JSP页面下载任何文件作为附件。如何从JSP下载附件文件
我想在JSP页面上创建一个链接,并通过点击该链接用户可以从邮件服务器下载文件。该链接应为内容处理的附件类型。我怎么能在JSP中做到这一点?
我想知道如何从邮件服务器上根据内容配置从JSP页面下载任何文件作为附件。如何从JSP下载附件文件
我想在JSP页面上创建一个链接,并通过点击该链接用户可以从邮件服务器下载文件。该链接应为内容处理的附件类型。我怎么能在JSP中做到这一点?
我建议你稍微打破这个问题。
你知道如何从一个普通的java程序中访问附件吗?如何与邮件服务器等接口?如果您知道这一点,通过jsp提供可下载格式的附件应该很简单。虽然,我强烈建议你做一个常规的servlet,因为你可能没有太多的使用jsp的额外机制。
只要确保你设置根据在下载这些东西的内容类型:
在JSP中:<%@page contentType="image/png" %>
在的servelt:response.setContentType("image/png");
不要使用这样的JSP,它是食谱因为在使用它来传输二进制文件时遇到麻烦,因为<% %>
标记之外的所有空白都将被打印到响应中,这只会破坏二进制内容。您只需在JSP中放置一个类似的HTML链接,然后使用servlet类执行所有处理和流式处理任务。要设置响应标题,只需使用HttpServletResponse#setHeader()
。
response.setHeader("Content-Disposition", "attachment;filename=name.ext");
你可以在这里找到它正是这样做的一个基本的servlet例如:FileServlet
。
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();
你为什么不用''?你的评价不必要的过分复杂。 – BalusC 2012-05-28 13:13:51
HttpServletResponse拼错了。 – 2012-06-04 16:09:36
@Larry:固定:) – BalusC 2012-06-04 16:10:16