SpringBoot(3) 檔案上傳和訪問
阿新 • • 發佈:2018-12-14
springboot檔案上傳 MultipartFile file,源自SpringMVC
MultipartFile 物件的transferTo方法,用於檔案儲存(效率和操作比原先用FileOutStream方便和高效)
1 @Controller 2 public class FileController { 3 4 private static final String filePath = "D:/.../src/main/resources/static/images/"; 5 6 7 @RequestMapping(value = "upload")8 @ResponseBody 9 public JsonData upload(@RequestParam("head_img") MultipartFile file,HttpServletRequest request) { 10 11 //file.isEmpty(); 判斷圖片是否為空 12 //file.getSize(); 圖片大小進行判斷 13 String name = request.getParameter("name"); 14 System.out.println("使用者名稱:"+name);15 16 // 獲取檔名 17 String fileName = file.getOriginalFilename(); 18 System.out.println("上傳的檔名為:" + fileName); 19 20 // 獲取檔案的字尾名,比如圖片的jpeg,png 21 String suffixName = fileName.substring(fileName.lastIndexOf(".")); 22 System.out.println("上傳的字尾名為:" + suffixName);23 24 // 檔案上傳後的路徑 25 fileName = UUID.randomUUID() + suffixName; 26 System.out.println("轉換後的名稱:"+fileName); 27 28 File dest = new File(filePath + fileName); 29 30 try { 31 file.transferTo(dest); 32 33 return new JsonData(0, fileName); 34 } catch (IllegalStateException e) { 35 e.printStackTrace(); 36 } catch (IOException e) { 37 e.printStackTrace(); 38 } 39 return new JsonData(-1, "fail to save ", null); 40 } 41 42 }
前端簡易程式碼
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>uploadimg.html</title> 5 <meta name="keywords" content="keyword1,keyword2,keyword3"></meta> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 7 <script src="/js/test.js" type="text/javascript"></script> 8 </head> 9 10 <body> 11 <form enctype="multipart/form-data" method="post" action="/upload"> 12 檔案:<input type="file" name="head_img"/> 13 姓名:<input type="text" name="name"/> 14 <input type="submit" value="上傳"/> 15 </form> 16 17 </body> 18 </html>
檔案大小配置,啟動類裡面配置
1 @Bean 2 public MultipartConfigElement multipartConfigElement() { 3 MultipartConfigFactory factory = new MultipartConfigFactory(); 4 //單個檔案最大 5 factory.setMaxFileSize("10240KB"); //KB, MB 6 //設定總上傳的資料大小 7 factory.setMaxRequestSize("1024000KB"); 8 return factory.createMultipartConfig(); 9 10 }
在application.properties中新增上傳路徑,可用於在檔案上傳後的直接訪問
web.upload-path=D:/.../src/main/resources/static/images/
spring.resources.static-locations=...:${web.upload-path}