文件下载先给出一个超链接到下载的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下载模板