【发布时间】:2017-03-01 10:11:07
【问题描述】:
我有一个需求,搜索页面有一个用户指南链接。当用户点击链接时,需要从部署在JBOSS的WAR中的WEB-INF\doc文件夹中下载Word或PDF文档。
在搜索页面有如下链接 下载PDF文件 单击链接后,用户指南文档应从 WEB-INF\doc 文件夹下载并打开
谷歌搜索后发现我们需要这样使用
InputStream resourceContent = context.getResourceAsStream("/WEB-INF/doc/foo.doc");
我的应用程序使用 JSP 和 Servlet 作为控制器,在这种情况下,我需要在 doGet 方法中编写以下代码
// 获取文件的 MIME 类型
字符串 mimeType = context.getMimeType(filePath);
if (mimeType == null) {
// 如果未找到 MIME 映射,则设置为二进制类型
mimeType = "应用程序/八位字节流";
}
System.out.println("MIME 类型:" + mimeType);
// modifies response
response.setContentType(mimeType);
response.setContentLength((int) downloadFile.length());
// forces download
String headerKey = "Content-Disposition";
String headerValue = String.format("attachment; filename=\"%s\"", downloadFile.getName());
response.setHeader(headerKey, headerValue);
// obtains response's output stream
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
inStream.close();
outStream.close();
还有我需要在 WEB.XML 中配置的内容。
我的理解是点击链接时调用Servelt doGet方法下载。
请你帮忙看看步骤是什么。
提前致谢
【问题讨论】:
标签: jsp servlets jboss web-inf