一、页面上用 超链接 a 或者 是 iframe的src属性
二、Java代码
1、HttpServletResponse 和 HttpServletRequest 2、下面的方法是struts2利用ServletActionContext获取 HttpServletResponse 和 HttpServletRequest ,spring mvc直接写在方法参数列表即可。 3、IO流读写
/**
* 下载订单模板
* @param response
* @param req
* @return
*/
public String downloadOrderTemplate(){
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest req = ServletActionContext.getRequest();
String fileName = "订单模板.xls";
String realPath = req.getSession().getServletContext().getRealPath("/guest/distPlatform/excelOrderTemplate/");
System.out.println(realPath);
System.out.println(new File(realPath,fileName).toString());
BufferedInputStream in;
try {
in = new BufferedInputStream(new FileInputStream(new File(realPath,fileName)));
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] temp = new byte[1024];
int size = 0;
while ((size = in.read(temp)) != -1) {
out.write(temp, 0, size);
}
System.out.println(size);
in.close();
byte[] buff=out.toByteArray();
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\""
+ new String(fileName.getBytes("gb18030"), "iso8859-1")
+ "\"");
response.addHeader("Content-Length", "" + buff.length);
response.setContentType("application/octet-stream;charset=UTF-8");
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
outputStream.write(buff);
outputStream.flush();
outputStream.close();
} catch (Exception e) {
log.info("下载订单模板异常");
e.printStackTrace();
}
return null;
}