java 返回浏览器下载文件 缺乏、安全感 2021-12-10 15:27 447阅读 0赞 @RequestMapping("downloadFile") public String downloadFile(HttpServletRequest request, HttpServletResponse response,String fileName){ if(StringUtils.isNotBlank(fileName)){ String zipFileName = fileName+".zip"; File file = new File(rootPath+zipFileName); if(file.exists()){ byte[] buffer = new byte[1024]; FileInputStream fis = null; BufferedInputStream bis = null; OutputStream os = null; String finalFileName = ""; try { final String userAgent = request.getHeader("USER-AGENT"); if(StringUtils.contains(userAgent, "MSIE")||StringUtils.contains(userAgent,"Trident")){//IE浏览器 finalFileName = URLEncoder.encode(zipFileName,"UTF8"); }else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器 finalFileName = new String(zipFileName.getBytes(), "ISO8859-1"); }else{ finalFileName = URLEncoder.encode(zipFileName,"UTF8");//其他浏览器 } response.setCharacterEncoding("UTF-8"); response.setContentType("application/force-download");// 设置强制下载不打开 response.addHeader("Content-Disposition", "attachment;fileName=" + finalFileName);// 设置文件名 fis = new FileInputStream(file); bis = new BufferedInputStream(fis); os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer, 0, i); i = bis.read(buffer); } return "下载成功"; }catch (Exception e){ }finally { if(fis != null){ try { fis.close(); }catch (Exception e){ e.printStackTrace(); } } if(bis != null){ try { bis.close(); }catch (Exception e){ e.printStackTrace(); } } if(os != null){ try { os.flush(); os.close(); }catch (Exception e){ e.printStackTrace(); } } } } } return "下载失败"; }
还没有评论,来说两句吧...