<struts>
<package name="default" extends="struts-default">
<action name="download" class="action.DownloadAction">
<result type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>
</package>
</struts>
当result为stream类型时,struts2会自动根据你配置好的参数下载文件。
其中主要使用的参数是:
contentType 指定下载文件的文件类型 —— application/octet-stream 表示无限制
inputName 流对象名 —— 比如这里写inputStream,它就会自动去找Action中的getInputStream方法。
contentDisposition 使用经过转码的文件名作为下载文件名 —— 默认格式是attachment;filename="${fileName}",将调用该Action中的getFileName方法。
bufferSize 下载文件的缓冲大小
package action;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
public class DownloadAction {
private String fileName;
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream() {
return ServletActionContext.getServletContext().getResourceAsStream("/" + fileName);
}
public String execute(){
return "success";
}
}