前端代码:
<a href="#" οnclick="openWindow('${pageContext.request.contextPath }/xxxAction_download.action?id=<s:property value="%{#template.id}"/>','700','400');">
struts.xml配置:
<result name="download" type="stream">
<param name="contentType">doc/docx</param>
<param name="inputName">inputStream</param><!-- inputStream对应模型驱动的Javabean的值-->
<param name="contentDisposition">attachment;filename="${#request.fileName}.doc"</param>
<param name="bufferSize">1024</param>
</result>
action层代码:
public String download(){
InputStream inputStream = elecApplicationTemplateService.findInputStreamByID(elecApplicationTemplate);
//将inputStream放置到栈顶
elecApplicationTemplate.setInputStream(inputStream);
return "download";
}
service层代码:
public InputStream findInputStreamByID(ElecApplicationTemplate elecApplicationTemplate) {
InputStream inputStream = null;
try {
Long id = elecApplicationTemplate.getId();
//使用申请模板ID查询申请模板信息
elecApplicationTemplate = applicationTemplateDao.findObjectById(id);
//获取文件的模板名称
String name = elecApplicationTemplate.getName();
//编码转换
name = URLEncoder.encode(name, "UTF-8");
ServletActionContext.getRequest().setAttribute("fileName", name);
//获取文件路径
String path = elecApplicationTemplate.getPath();
inputStream = new FileInputStream(new File(path));
} catch (Exception e) {
throw new RuntimeException();
}
return inputStream;
}