在下载word文件时,前台不能用ajax请求进行下载,使用window.open(url)进行请求下载。
另外,在控制层,注解不能有@ResponseBody。
1、下载word文件
response.reset(); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", -1); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode((String) resultMap.get("fileName"),"UTF-8")); OutputStream outputStream = response.getOutputStream(); BufferedInputStream inputStream = (BufferedInputStream) resultMap.get("file"); int i = 0; while ((i = inputStream.read()) != -1){ outputStream.write(i); } inputStream.close(); outputStream.flush(); outputStream.close();
2、下载excel文件
String userAgent= request.getHeader("USER-AGENT"); String name = request.getParameter("exp_name"); String fileName =name + "_数据导出.xls"; if(StringUtils.contains(userAgent, "MSIE")){ fileName = URLEncoder.encode(fileName,"UTF8"); }else if(StringUtils.contains(userAgent, "Mozilla")){ fileName = new String(fileName.getBytes(), "ISO8859-1"); }else{ fileName = URLEncoder.encode(fileName,"UTF8"); } response.reset(); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", -1); response.setContentType("application/vnd.ms-excel"); //String filename = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); OutputStream out = response.getOutputStream(); workbook.write(out); workbook.close();