定义action类如下:
package struts.action;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileDownloadDemo extends ActionSupport{
private String load;
public String getLoad() {
return load;
}
public void setLoad(String load) {
this.load = load;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
public InputStream getDownloadFile(){
return ServletActionContext.getServletContext().getResourceAsStream(load);
}
}
在struts.xml文件中配置action,代码如下:
<action name="downloadFile" class="struts.action.FileDownloadDemo">
<result name="success" type="stream">
<param name="contentDisposition">attachment;filename="我的问题.txt"</param>
<param name="inputName">downloadFile</param>
</result>
</action>
其中action类中定义的load可以在页面中直接指定,如可以在页面中定义如下:
<a href="downloadFile.ac?load=/upload/我的问题.txt">下载</a>
注意,action类中的getDownloadFile中的DownloadFile必须和配置文件中的参数inputName的值downloadFile一致,否则不能进行文件的下载,在配置文件中的filename可以自己定义。