Struts2文件下载

文件下载先给出一个超链接到下载的Action,这个作为下载文件在webContent目录下:给出超链接为:

<a href="down?res=算法范围.doc&resType=application/msword&resName=my.doc">下载DOC类型文件</a>

参数以此为:文件名,文件类型,下载时的文件名;

下载文件需要在Struts配置文件中这样配置:

       <action name="down" class="struts1.action.DownAction">
       		<result type="stream" name="success">
       			<!-- 该参数指定二进制流 -->
       			<param name="contentType">${resType}</param>
       			<!-- 指定IO流的入口 -->
       			<param name="inputName">target</param>
       			<!-- 指定下载时文件名 -->
       			<param name="contentDisposition">filename=${resName}</param>
       			<!-- 指定缓冲大小 -->
       			<param name="bufferSize">4096</param>
       		</result>
       </action>

相应的Action类的写法为:

public class DownAction extends ActionSupport {

	//下载文件主要有三种:1、下载的目标资源,2、下载文件类型,3、下载文件名
	private String res;			//下载目标资源
	private String resType;		//下载文件类型
	private String resName;	//下载文件名
	
	//下载文件IO流的入口
	public InputStream getTarget() throws IOException {
		String path = ServletActionContext.getServletContext().getRealPath("/");
		return new FileInputStream(path+res);
	}
	
	public String getRes() {
		return res;
	}
	public void setRes(String res) throws Exception{
		//对请求参数做处理
		this.res = new String(res.getBytes("ISO-8859-1"), "UTF-8");
	}
	public String getResType() {
		return resType;
	}
	public void setResType(String resType) {
		this.resType = resType;
	}
	public String getResName() {
		return resName;
	}
	public void setResName(String resName) {
		this.resName = resName;
	}
}
这个是通用的Struts2下载模板

你可能感兴趣的:(struts)