SpringBoot學習筆記(8)-----SpringBoot檔案上傳
阿新 • • 發佈:2018-11-12
直接上程式碼,上傳檔案的前端頁面:
<body> <form action="/index/upload" enctype="multipart/form-data" method="post"> <input type="file" name="file"> <input type="submit" value="提交"> </form> </body>
後臺上傳方法:
/** * 檔案上傳 * @param file *@return */ @RequestMapping("/upload") @ResponseBody public String upload (@RequestParam("file")MultipartFile file) { String msg = ""; //獲取上傳檔名 String fileName = file.getOriginalFilename(); //獲取上傳檔案字尾名 String suffixName = fileName.substring(fileName.lastIndexOf("."));//定義檔案儲存路徑 String savePath = "D:\\dev-idea\\study\\spring-boot-demo01\\src\\main\\resources\\upload\\"; //使用UUID+字尾名儲存檔名,防止中文亂碼問題, fileName = UUID.randomUUID() + suffixName; //構建file物件 File files = new File(savePath+fileName); if (!files.getParentFile().exists()) { files.mkdirs(); }try { file.transferTo(files); msg = "儲存成功"; } catch (IOException e) { msg = "儲存失敗"; e.printStackTrace(); } return msg; }
這樣就完成了檔案的上傳,當然這裡只是一個demo,只儲存了檔案,在實際的運用開發中,還需要將檔案路徑和檔名儲存到資料庫中,使用檔案的時候根據該路徑去找到檔案。
在SpringBoot中也針對檔案上傳提供了一些配置。
在示例中,SpringBoot預設上傳檔案大小為10Mb,如果我們上傳的問題件大於10Mb時,系統會出現FileUploadBase$SizeLimitExceededException異常,此時我們可以根據我們的需求,使用spring.servlet.multipart.max-file-size來配置我們自己需要的最大上傳檔案大小和request-size,request-size應該總是要大於file-size,還可以使用intermediate配置一個零時檔案等。