import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class downloadAction extends ActionSupport {
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
ActionContext actionContext = null;
try {
String path=ServletActionContext.getServletContext().getRealPath("/img");
System.out.println(path);
File f = new File(path+"\\1.png");
InputStream istream = new FileInputStream(f);
actionContext.getContext().put("data", istream);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return SUCCESS;
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default" >
<action name="download" class="downloadAction">
<result name="success" type="stream">
<param name="contentType">application/image/x-png</param>
<param name="inputName">data</param>
<param name="contentDisposition">filename=1.png</param>
<param name="bufferSize">409600000</param>
</result>
</action>
</package>
</struts>