Struts2文件下载(版本更新)
2016-10-18 15:04
239 查看
虽然通过超链的href属性直接指定要下载的资源也可以实现文件下载,但遇到中文文件名、下载前的权限检查这些问题,超链都处理不了,还得Struts2来进行文件下载。采用Struts2提供的stream结果类型来支持文件下载。在stream结果类型的结果中需指定一个inputName参数,参数值指定了一个文件下载入口的输入流。废话不多说,下面分步介绍Struts2支持文件下载的过程:
1、创建一个文件下载的action,比普通action多一个返回InputStream的方法;
其中inputPath,contentType,downFileName分别表示文件路径(待下载文件),文件类型,文件名。
2、配置action
最重要的是配置一个stream类型的结果,结果中的四个参数contentType,inputName,contentDisposition,bufferSize值分别是文件类型(可省.),文件下载入口的输入流(不可缺),下载后的文件名(不可省),文件大小控制(可省,一般设置大一点就行)。此外,action还需要携带一个参数inputPath,表示带下载文件的路径(相对或绝对)。
在jsp页面添加一个超链,href=“文件下载action”。至此,Struts2至此文件下载就完成了!!!
文件下载最常应用场景就是软件自动更新,用户权限下载等,此时可根据需求,在action的execute方法返回SUCCESS之前进行权限控制,版本控制等,也可用ajax实现,在此不作介绍了!
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实现,在此不作介绍了!
相关文章推荐
- E A S Y 实现文件上传下载【更新版本】
- 版本更新与文件下载
- Android 版本检测、文件下载并更新
- 搭建android版本更新服务器使用android系统自带的DownloadManager下载文件
- app更新版本下载文件,然后安装
- 关于android中版本自动更新,从服务器下载下来的文件不能安装的问题
- 通过okhttp3下载文件实现APP版本更新
- 通过okhttp3下载文件实现APP版本更新
- 清除windows自动更新下载的文件
- flash纯动态生成饼图[2007-3-14更新增加xml配置文件,可下载(转)
- 下载文件出错,下发了紧急版本
- Visual Assist X V10.4.1626的破解文件(2008.01.17更新 RC版本)
- C#下载文件代码更新20070920
- 生成/读取(反向更新数据库) Excel文件(示例代码下载)
- 你能下载,他能下载吗?-----Struts2文件下载的权限控制(14)
- 生成/读取(反向更新数据库) Excel文件(示例代码下载)
- Visual.Assist.X V10.4.1624.0 的破解文件(2007.12.07更新 Release版本)
- [转]生成/读取(反向更新数据库) Excel文件(示例代码下载)
- Struts2文件的上传和下载
- 【下载】 修复Vista文件拷贝缓慢的更新补丁KB931770