默認情況下springboot中request.getServletContext().getRealPath 返回的是一個臨時文件夾的地址
通過查看源代碼 位置在
org.springframework.boot.context.embedded.AbstractEmbeddedServletContainerFactory#getCommonDocumentRoot
private File getCommonDocumentRoot() { for (String commonDocRoot : COMMON_DOC_ROOTS) { File root = new File(commonDocRoot); if (root.exists() && root.isDirectory()) { return root.getAbsoluteFile(); } } return null; }
private static final String[] COMMON_DOC_ROOTS = { "src/main/webapp", "public", "static" };
可以看到springboot 會嘗試讀取COMMON_DOC_ROOTS 配置里面的路徑,所以我們只需要在springboot 所在的jar 或者項目所在的根目錄下新建一個public或者static的文件夾,那么通過 request.getServletContext().getRealPath 就會得到public或者static的路徑