除了Struts2需要的核心包外,还需要导入
- commons-fileupload.jar
- commons-io.jar
public class DownLoad extends BaseAction{
private static final long serialVersionUID = 1L;
private InputStream attachstream ; // 文件输入流
private String attachname ;//文件名
private String path;//文件路径
@Action(value = "/Download",
results = {@Result(name = "success", type = "stream",
params = {
"contentType", "application/octet-stream",
"inputName", "attachstream",
"contentDisposition", "attachment;filename=\"${attachname}\"",
"bufferSize", "4096"
})})
public String downloadFile(){
try {
path = new String(path.getBytes("ISO-8859-1"),"UTF-8");
attachstream = new FileInputStream(ServletActionContext.getServletContext().getRealPath(path)) ;
//attachstream = new FileInputStream(path);
String []attachnames =path.split("/");
attachname = attachnames[attachnames.length - 1];
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
/**
*省略了getter、setter方法
*
**/
}
BaseAction
public class BaseAction extends ActionSupport implements SessionAware, RequestAware,ServletResponseAware {
private static final String PROJECT_NAME = "/tjcrm";
private static final long serialVersionUID = -8757701205867627690L;
protected Map<String,Object> session;
protected Map<String,Object> request;
protected HttpServletResponse response;
public static String getProjectName() {
return PROJECT_NAME;
}
public void setRequest(Map<String, Object> request) {
this.request = request;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
}