弹簧引导文件上传简单实例代码

  

上传文件是我们日常使用最为广泛的功能之一,比如应用端上传头像。本章演示如何从客户端上传到弹簧引导开发的Api中。

  https://github.com/fishpro/spring-boot-study/tree/master/spring-boot-study-upload

  

1新建春引导Maven示例工程项目

  

注意:本示例是用想法开发工具

  
      <李>文件比;新比;项目,如下图选择春天Initializr然后点击【下】下一步李   <李>填写GroupId(包名),工件(项目名)即可。点击下一步李   <李> groupId=com.fishpro李   <李> artifactId=上传李   <李>选择依赖Spring Web启动前面打钩。   <李>项目名设置为spring-boot-study-upload。   
  

文件上传不需要引入第三方组件。

  

2依赖引入Pom.xml

  

为了演示代码,这里引入thymeleaf

        & lt; dependencies>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-web   & lt;/dependency>      & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-thymeleaf   & lt;/dependency>   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-test   & lt; scope> test   & lt;/dependency>   & lt;/dependencies>      

3编写上传示例
  本章代码主要演示单文件上传和多文件上传,前端采用thymeleaf模板,实际上就是一个html文件。文件清单包括

  
      <李>还是。李html前端文件   <李> FileController。李java控制层文件   <李> FileUtil。李java文件常用类   
  

3.1控制层代码

  

主要使用MultipartFile来实现,如下代码/上传和上传分别为单文件上传和多文件上传。其中@ value (" $ {fishpro.uploadPath} ")是配置文件中设置的。

        server.port=8086   fishpro.uploadPath=/用户/jiaojunkang/桌面/上传/            @ controller   公开课FileController {      @ value (" $ {fishpro.uploadPath} ")   私人字符串uploadPath;      @GetMapping(“还是”)   还是公共字符串(){   返回“还是”;   }/* *   *单文件   * */@PostMapping("/上传”)   @ResponseBody   对象上传(@RequestParam(“文件”)MultipartFile文件,HttpServletRequest请求){   Object> Map<字符串;地图=new HashMap ();   map.put("状态",0);   字符串文件名=file.getOriginalFilename ();   .toString文件名=UUID.randomUUID () ();//对文件名称重命名      尝试{   uploadPath FileUtil.uploadFile (file.getBytes(),文件名);   map.put(“文件名”,文件名);   }捕捉(异常e) {   map.put(“地位”,1);   map.put(“信息”,e.getMessage ());      }         返回地图;   }/* *   *多文件   * */@PostMapping("/上传”)   @ResponseBody   对象上传(@RequestParam(“文件”)MultipartFile[]文件,HttpServletRequest请求){   Object> Map<字符串;地图=new HashMap ();   map.put("状态",0);   List文件名=new ArrayList<在();   (MultipartFile文件:文件   ) {   字符串ext=file.getOriginalFilename () .split (“\ \”。) [1];   字符串文件名=file.getOriginalFilename ();//文件名=UUID.randomUUID () .toString () +“。”+ ext;//对文件名称重命名      尝试{   uploadPath FileUtil.uploadFile (file.getBytes(),文件名);   filenames.add(文件名);   }捕捉(异常e) {   map.put(“地位”,1);   map.put(“信息”,e.getMessage ());   返回地图;      }   }      map.put(“文件名”,文件名);   返回地图;   }   }      

3.2前端文件
  

  

前端文件这里演示的比较简单,可以有多中形态,这里使用形式来提交。

        & lt; !DOCTYPE html>   & lt; html lang=癳n”比;   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; title> Title   & lt;/head>   & lt; body>   & lt;人力资源/比;   & lt; div>单位文件& lt;/div>   & lt;形式enctype=岸嗖糠?格式”方法=皃ost”action="/上传”比;   文件& lt;输入类型="文件" name="文件"/比;   & lt;输入类型="提交" value=" https://www.yisu.com/zixun/上传”/比;   & lt;/form>   & lt;人力资源/比;   & lt; div>多文件& lt;/div>      & lt;形式enctype=岸嗖糠?格式”方法=皃ost”行动="/上传"比;   & lt; p>文件1 & lt;输入type="文件" name="文件"/祝辞& lt;/p>   & lt; p>文件2 & lt;输入type="文件" name="文件"/祝辞& lt;/p>   & lt; p>文件3 & lt;输入type="文件" name="文件"/祝辞& lt;/p>   & lt; p> & lt;输入类型=疤峤弧眝alue=" https://www.yisu.com/zixun/上传”/祝辞& lt;/p>   & lt;/form>   & lt;/body>   & lt;/html>

弹簧引导文件上传简单实例代码