springboot将文件响应给前端
获取当前项目路径
System.out.println(System.getProperty("user.dir"));
将文件放入响应流
/** * 响应体加入文件流 * * @param response * @param filePath 文件从盘符开始的完整路径 */ public static void buildExcelDocument(HttpServletResponse response, String filePath) { log.debug("文件流filePath:" + filePath); //该方法是判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false。 if (filePath.contains("%")) { try { filePath = URLDecoder.decode(filePath, "UTF-8"); System.out.println(filePath); } catch (UnsupportedEncodingException e) { log.debug("响应流解码错误:" + e.toString()); } } ServletOutputStream out = null; FileInputStream in = null; try { in = new FileInputStream(new File(filePath)); String[] dir = filePath.split("/"); String fileName = dir[dir.length - 1]; String[] array = fileName.split("[.]"); String fileType = array[array.length - 1].toLowerCase(); //设置文件ContentType类型、图片类型 if ("jpg,jepg,gif,png".contains(fileType)) { response.setContentType("image/" + fileType); //pdf类型 } else if ("pdf".contains(fileType)) { response.setContentType("application/pdf"); } else { //自动判断下载文件类型 response.setContentType("multipart/form-data"); } out = response.getOutputStream(); // 读取文件流 int len = 0; byte[] buffer = new byte[1024 * 10]; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } out.flush(); response.setStatus(200); } catch (FileNotFoundException e) { log.error("error:FileNotFoundException:" + e.toString()); } catch (Exception e) { log.error("error:" + e.toString()); } finally { try { assert out != null; out.close(); in.close(); } catch (NullPointerException e) { log.error("close error:NullPointerException:" + e.toString()); } catch (Exception e) { log.error("close error:Exception:" + e.toString()); } } }
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
Java 窗口设置图标及背景图片