Struts2文件下载(版本更新)
来源:互联网 发布:linux 模糊搜索文件 编辑:程序博客网 时间:2024/05/22 20:50
虽然通过超链的href属性直接指定要下载的资源也可以实现文件下载,但遇到中文文件名、下载前的权限检查这些问题,超链都处理不了,还得Struts2来进行文件下载。采用Struts2提供的stream结果类型来支持文件下载。在stream结果类型的结果中需指定一个inputName参数,参数值指定了一个文件下载入口的输入流。废话不多说,下面分步介绍Struts2支持文件下载的过程:
1、创建一个文件下载的action,比普通action多一个返回InputStream的方法;
package com.gmi.client;import java.io.InputStream;import java.io.UnsupportedEncodingException;import org.apache.struts2.ServletActionContext;public class FileDownloadAction extends BaseAction { /** * @author xiaoxin_tang */ private static final long serialVersionUID = 1L; private String inputPath; private String contentType; private String downFileName; public String getInputPath() { return inputPath; } public void setInputPath(String inputPath) { try { this.inputPath = new String(inputPath.getBytes("iso-8859-1"),"gbk"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String getContentType() { return contentType; } public void setContentType(String contentType) { this.contentType = contentType; } public String getDownFileName() { return downFileName; } public void setDownFileName(String downFileName) { try { this.downFileName = new String(downFileName.getBytes("iso-8859-1"),"gbk"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public InputStream getTargetFile(){ return ServletActionContext.getServletContext().getResourceAsStream(inputPath); } public String execute() throws Exception { return SUCCESS; }}
其中inputPath,contentType,downFileName分别表示文件路径(待下载文件),文件类型,文件名。
2、配置action
<action name="download" class="com.gmi.client.FileDownloadAction"> <param name="inputPath">download/WebPlugin.exe</param> <result name="success" type="stream"> <param name="contentType">${contentType}</param> <param name="inputName">targetFile</param> <param name="contentDisposition">attachment;fileName="WebPlugin.exe" </param> <param name="bufferSize">51200</param> </result> </action>
最重要的是配置一个stream类型的结果,结果中的四个参数contentType,inputName,contentDisposition,bufferSize值分别是文件类型(可省.),文件下载入口的输入流(不可缺),下载后的文件名(不可省),文件大小控制(可省,一般设置大一点就行)。此外,action还需要携带一个参数inputPath,表示带下载文件的路径(相对或绝对)。
在jsp页面添加一个超链,href=“文件下载action”。至此,Struts2至此文件下载就完成了!!!
文件下载最常应用场景就是软件自动更新,用户权限下载等,此时可根据需求,在action的execute方法返回SUCCESS之前进行权限控制,版本控制等,也可用ajax实现,在此不作介绍了!
0 0
- Struts2文件下载(版本更新)
- Android 版本检测、文件下载并更新
- app更新版本下载文件,然后安装
- 版本更新 下载APK asynctask下载文件 保存到本地
- (10)Struts2文件下载
- Struts2 文件下载(Stream)
- jquery下载所有版本(实时更新)
- 版本更新下载
- 版本更新、下载、安装
- 版本更新下载
- 通过okhttp3下载文件实现APP版本更新
- 通过okhttp3下载文件实现APP版本更新
- Struts2文件下载(含多文件下载)
- Struts2以前版本下载地址
- 自定义版本更新ProgressBar下载
- 离线下载与版本更新
- Android APK版本更新下载
- apk版本更新下载安装
- Android常见ROM类型识别
- 继承、实现、依赖、关联、聚合、组合的联系与区别
- Android自定义Dialog控制
- (快速入门4)创建 Hello World
- Linux环境下使用git提交更新代码
- Struts2文件下载(版本更新)
- Mybatis Generator 获取不到字段注释
- 工厂模式
- python中内建函数isinstance的用法
- 控制横竖屏显示不同界面
- RecyclerView分割线
- BottomDialog 一个自定义的从底部弹出的 dialog,仿照微博的分享弹框
- The request sent by the client was syntactically incorrect.
- Maven创建Web项目,jsp引入静态文件提示报错(javax.servlet.ServletException cannot be resolved to a type ) 解决办法