文件上传的性能实现是咱们做Web利用时候最为常见的利用场景,比方:实现头像的上传,Excel文件数据的导入等性能,都须要咱们先实现文件的上传,而后再做图片的裁剪,excel数据的解析入库等后续操作。

明天通过这篇文章,咱们就来一起学习一下如何在Spring Boot中实现文件的上传。

入手试试

第一步:创立一个根底的Spring Boot我的项目,如果还不会的话就先看看这篇《疾速入门》。

第二步:在pom.xml中引入模版引擎依赖:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

你也能够抉择其余你相熟的模版引擎,比方:Freemarker。

第三步:在resources目录下,创立新目录templates;在templates目录下再创立一个文件上传的页面upload.html,内容如下:

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8" />    <title>文件上传页面</title></head><body><h1>文件上传页面</h1><form method="post" action="/upload" enctype="multipart/form-data">    抉择要上传的文件:<input type="file" name="file"><br>    <hr>    <input type="submit" value="提交"></form></body></html>

第四步:创立文件上传的解决控制器,命名为UploadController

@Controller@Slf4jpublic class UploadController {    @Value("${file.upload.path}")    private String path;    @GetMapping("/")    public String uploadPage() {        return "upload";    }    @PostMapping("/upload")    @ResponseBody    public String create(@RequestPart MultipartFile file) throws IOException {        String fileName = file.getOriginalFilename();        String filePath = path + fileName;        File dest = new File(filePath);        Files.copy(file.getInputStream(), dest.toPath());        return "Upload file success : " + dest.getAbsolutePath();    }}

其中蕴含这几个重要元素:

  1. 成员变量path,通过@Value注入配置文件中的file.upload.path属性。这个配置用来定义文件上传后要保留的目录地位。
  2. GET申请,门路/,用于显示upload.html这个文件上传页面。
  3. POST申请。门路/upload,用于解决上传的文件,即:保留到file.upload.path配置的门路上面。
留神:这里次要演示文件上传的次要流程,实在利用还有更多内容要思考,比方:文件上传后的文件名解决(避免重名)、分布式状况下文件上传后如何共享拜访等。更高级的最初,咱们后续文章持续讲。

第五步:编辑application.properties配置文件

spring.servlet.multipart.max-file-size=2MBspring.servlet.multipart.max-request-size=2MBfile.upload.path=/Users/didi/

前两个参数用于限度了上传申请和上传文件的大小,而file.upload.path是下面咱们本人定义的用来保留上传文件的门路。

更多本系列收费教程连载「点击进入汇总目录」

测试验证

第一步:启动Spring Boot利用,拜访http://localhost:8080,能够看到如下的文件上传页面。

第二步:抉择一个不大于2MB的文件,点击“提交”按钮,实现上传。

如果上传胜利,将显示相似上面的页面:

你能够依据打印的文件门路去查看文件是否真的上传了。

代码示例

本文的相干例子能够查看上面仓库中的chapter4-3目录:

  • Github:https://github.com/dyc87112/SpringBoot-Learning/
  • Gitee:https://gitee.com/didispace/SpringBoot-Learning/

如果您感觉本文不错,欢送Star反对,您的关注是我保持的能源!

欢送关注我的公众号:程序猿DD,取得独家整顿的收费学习资源助力你的Java学习之路!另每周赠书不停哦~