@RequestMapping(value = "downExcle", method = RequestMethod.GET) @ResponseBody public void downLoadExcle(@RequestParam String uuid,HttpServletResponse response) { try { // path是指欲下载的文件的路径。 Map<String, Object> map = new HashMap<String, Object>(); map.put("id", uuid); String filePath = filePathService.queryFilePathById(map); File file = new File(filePath); if (!file.exists()) { response.sendError(404, "File not found!"); } else { // 取得文件名。 String filename = file.getName(); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(filePath)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response // JSONP 解决跨域问题 response.reset(); response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE"); response.addHeader("Access-Control-Allow-Headers", "Content-Type"); // 设置response的Header response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes(),"iso-8859-1")); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); //http://www.ruanyifeng.com/blog/2016/04/cors.html 跨域详情介绍 toClient.write(buffer); toClient.flush(); toClient.close(); } } catch (IOException ex) { ex.printStackTrace(); }
文件的下载与跨域问题的解决
猜你喜欢
转载自blog.csdn.net/qq_34233080/article/details/90635235
今日推荐
周排行