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}
