1. 程式人生 > >SpringBoot(3) 檔案上傳和訪問

SpringBoot(3) 檔案上傳和訪問

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}