Struts2学习9--文件下载
2013-11-11 22:35
267 查看
一、解决
1)文件中文名称容易出错的问题2)对下载进行权限管理
二、基本原理:
直接链接到一个action里去,这个action执行后输出的结果类型是type="stream"类型。三、实现方法
1)JSP<a href="<%=basePath%>fileOp/download?fileName=1.png">图片文件下载</a>
2)action配置
<package name="/fileOp" extends="struts-default"> <action name="download" class="com.meetcomet.util.FileDownLoadAction"> <param name="path">/download</param> <result name="success" type="stream"> <param name="contentType"> image/bmp,image/x-png,image/gif,image/pjpeg </param> <!-- 文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。 --> <param name="contentDisposition"> attachment;filename=${fileName} </param> <param name="inputName">targetFileName</param> <!-- 缓冲区大小 --> <param name="bufferSize">2048</param> </result> <result name="error">/fail.jsp</result> </action> </package>
3)Action
public class FileDownLoadAction extends ActionSupport { private String fileName; private String path; private InputStream targetFileName; public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getPath() { return ServletActionContext.getServletContext().getRealPath(path); } public void setPath(String path) { this.path = path; } public String execute() { // TODO Auto-generated method stub String filePath=getPath()+ "\\" + getFileName(); try { targetFileName=new FileInputStream(filePath); return SUCCESS; } catch (FileNotFoundException e) { e.printStackTrace(); return ERROR; } } public InputStream getTargetFileName() { return targetFileName; } public void setTargetFileName(InputStream targetFileName) { this.targetFileName = targetFileName; } }
View Code
注意:其他例子直接把文件名写在了配置里面,如下:这种太不方便了吧。
<package name="/fileOp" extends="struts-default"> <action name="download" class="com.meetcomet.util.FileDownLoadAction"> <param name="path">/download</param> <param name="fileName">1.png</param> <!-- -不一样的地方 --> <result name="success" type="stream"> <param name="contentType"> image/bmp,image/x-png,image/gif,image/pjpeg </param> <!-- 文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。 --> <param name="contentDisposition"> attachment;filename=${fileName} </param> <param name="inputName">targetFileName</param> <!-- 缓冲区大小 --> <param name="bufferSize">2048</param> </result> <result name="error">/fail.jsp</result> </action> </package>
相关文章推荐
- 【J2EE核心开发学习笔记 012】Struts2文件的上传与下载
- 框架学习之struts2-05文件上传、下载、ajax整合json
- struts2学习笔记之文件下载
- OA (ssh) 基本实现(poi 生成 Excel , struts2动态下载 mysql数据库文件) 学习笔记(含源代码)
- struts2学习之---控制文件下载
- struts2学习(14)struts2文件上传和下载(4)多个文件上传和下载
- Struts2.x 学习笔记 之 文件上传和下载
- 码农小汪-struts2学习10-上传下载文件
- 【学习笔记二】struts2的动态下载,使用Apache PoI生成excel表格,将用户信息以xls文件格式供用户下载
- struts2学习笔记之文件下载
- Struts2学习笔记之文件的上传与下载
- [原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题
- struts2 学习笔记(三)——文件的上传和下载
- struts2第十六讲学习笔记,文件下载
- struts2学习(13)struts2文件上传和下载(1)
- Struts2系统学习(10)文件上传与下载案例及原理分析
- Struts2学习笔记15:Struts2的文件上传和下载【续】二
- Struts2学习之文件上传/下载&ValueStack(三)
- 【原创】Struts2学习笔记之文件的上传与下载
- 【Struts2】Struts2学习(6)文件上传和下载