※靜態資源
官網說明中,可以在 classpath 和 ServletContext 下增加檔案或資料夾,裡面都算是靜態
1.專案下有個 .classpath 檔, kind="src" 的 path 就是 classpath 路徑,也可自己增加
classpath/static
classpath/public
classpath/resources
classpath/META-INF/resources
2.ServletContext
src/main/webapp
如果包的是jar檔,大多數的構建工具可能會默默的忽略
以上5個地方都可以
假設在 public 下放一個圖片檔 xxx.jpg
網址打上 http://localhost:9000/xxx.jpg 即可訪問靜態資源
※上傳
※<form action="upload" method="post" enctype="multipart/form-data"> <input type="file" name="fileName"><br /> <input type="submit" /> </form>
※
※
@RestController public class FileUpload { @RequestMapping("/upload") public Map<String, String> processFileUpload(@RequestParam("fileName") MultipartFile fName) throws IllegalStateException, IOException { final File path = new File("D:/" + fName.getOriginalFilename()); fName.transferTo(path); Map<String, String> map = new HashMap<>(); map.put("msg", "success"); map.put("path", path.getPath()); return map; } } @SpringBootApplication public class Test { public static void main(String[] args) { SpringApplication.run(Test.class, args); } }
※@RestController 就是 @ResponseBody 和 @Controller 的組合,點進去可以看到,也就是整個 class 都是回傳 JASON 的,如果整個 class 都要回傳 JASON,就不用每一個方法都設 @ResponseBody 了
※打上 http://localhost:9000/index.html 後可上傳
※@RequestParam 必需對應前端的 name 名稱,如果不寫,那 MultipartFile 的變數必需和前端的 name 一樣
※預設不能超過 1048576 b 的檔案,也就是 1MB
會出「The field fileName exceeds its maximum permitted size of 1048576 bytes.」的訊息
※官網說在 classpath 下增加 application.properties 可設定一些有的沒的,搜尋 MULTIPART 可設定上傳相關的屬性,有需要在複製下來改,以下是預設值和說明
spring.servlet.multipart.enabled=true #是否啟用多檔上傳
spring.servlet.multipart.file-size-threshold=0 # 檔案超過多少時緩存,可參考這篇的說明
spring.servlet.multipart.location= #檔案上傳時的臨時資料夾,可參考這篇的說明
spring.servlet.multipart.max-file-size=1MB #一個檔案的最大值
spring.servlet.multipart.max-request-size=10MB #全部檔案的最大值
spring.servlet.multipart.resolve-lazily=false #是否啟用lazy
沒有留言:
張貼留言