首先springboot項目使用內置tomcat打成jar包后如果將文件放在resource下 需要使用 如下方式讀取
因為打成jar包后資源文件是在jar包里的,通過File獲取資源絕對路徑是不能訪問到jar包里面的,因此使用ResourceLoader去獲取文件。
InputStream inputStream = null; ResourceLoader resourceLoader = new DefaultResourceLoader(); Resource resource=resourceLoader.getResource("classpath:file/毒品價格模板.xlsx"); logger.info(resource.toString()); BufferedInputStream bis=null; try { inputStream=resource.getInputStream(); String fileName="毒品價格模板.xlsx"; response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8")); response.addHeader(HttpHeaders.CONTENT_TYPE,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); BufferedOutputStream bos = new BufferedOutputStream( response.getOutputStream()); bis = new BufferedInputStream(inputStream); byte[] b=new byte[1024]; int i = bis.read(b); while (i != -1) { bos.write(b, 0, b.length); bos.flush(); i = bis.read(b); } } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } }