1、第一种方式
public ActionForward downLoad(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String realPath = request.getSession().getServletContext().getRealPath("/downLoad/caohuan.txt");
File file = new File(realPath);
InputStream in = new FileInputStream(file);
//BufferedReader reader = new BufferedReader(new InputStreamReader(in));
OutputStream out = response.getOutputStream();
//这是弹出下载框
response.setHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename="
+ new String(file.getName().getBytes(), "ISO8859-1"));
response.addHeader("Content-Length", "" + file.length());
byte [] buffer = new byte[1024];
int len = 0;
while((len = in.read(buffer)) != -1)
{
out.write(buffer, 0, len);
}
out.flush();
in.close();
out.close();
return null;
}
2、第二种方式
package cn.itcast.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DownloadAction;
public class ItcastAction extends DownloadAction {
protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("-----------");
//要下载的文件必须放在web-inf的路径下
return new DownloadAction.ResourceStreamInfo("application/octet-stream", this.getServlet().getServletContext(), "/WEB-INF/caohuan.txt");
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("---------------");
response.setHeader("Content-Disposition", "attachment;filename=caohuan.txt");
return super.execute(mapping, form, request, response);
}
}
//strtus-config.xml
<action path="/downLoad" type="cn.itcast.actions.ItcastAction"></action>
//jsp
<html:link action="/downLoad">downLoad</html:link>