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} 
原文地址:https://www.cnblogs.com/platycoden/p/9778714.html