文件上传的性能实现是咱们做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(); }}
其中蕴含这几个重要元素:
- 成员变量
path
,通过@Value
注入配置文件中的file.upload.path
属性。这个配置用来定义文件上传后要保留的目录地位。 - GET申请,门路
/
,用于显示upload.html
这个文件上传页面。 - 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学习之路!另每周赠书不停哦~