@RequestMapping(value = "/downloadFile",method = RequestMethod.GET) public void downLoad(HttpServletRequest request,HttpServletResponse response) throws Exception { Logger log = LoggerFactory.getLogger(DownLoadDZZS.class); ServletRequestAttributes requestAttributes =(ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); String filePath = request.getParameter("path"); String isOnLine = request.getParameter("isOnLine"); log.info("下载预览参数========"+filePath+isOnLine); impl.download(filePath,isOnLine,request,response); }
service层:
public void download(String path, String isOnLine, HttpServletRequest request, HttpServletResponse response) throws Exception { //判断身份证号是否为空 if (path == null || path.equals("")) { ArrayList<Object> objects = new ArrayList<>(); // return new ResultEntity(1,"查询失败,身份证号不能为空",objects); return; } 判断不动产证号是否为空 if (isOnLine == null || isOnLine.equals("")) { ArrayList<Object> objects = new ArrayList<>(); // return new ResultEntity(1,"查询失败,不动产证号不能为空",objects); return; } File f = new File(path); if (!f.exists()) { response.sendError(404, "File not found!"); return; } String fileName = f.getName(); //fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); BufferedInputStream br = new BufferedInputStream(new FileInputStream(f)); byte[] buf = new byte[1024]; int len = 0; response.reset(); // 非常重要 if (isOnLine.equalsIgnoreCase("true")) { // 在线打开方式 URL u = new URL("file:///" + path); response.setContentType(u.openConnection().getContentType()); response.addHeader("Access-Control-Allow-Origin", "*");//解决跨域 response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "inline; filename=" + URLEncoder.encode(fileName, "UTF-8")); // 文件名应该编码成UTF-8 } else if (isOnLine.equalsIgnoreCase("false")) { // 纯下载方式 response.setContentType("application/x-msdownload"); response.addHeader("Access-Control-Allow-Origin", "*");//解决跨域 response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); } else { return; } OutputStream out = response.getOutputStream(); while ((len = br.read(buf)) > 0) { out.write(buf, 0, len); } br.close(); out.close(); }
请求事例:http://127.0.0.1:8183/downloadFile?path=F:/aaaa/aa.jpg&isOnLine=false
isOnLine=false控制是下载还是在线预览
版权声明:本文为Jzq0006原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。