零、本篇要点
- 介绍SpringBoot对文件上传的自动配置。
- 介绍MultipartFile接口。
- 介绍SpringBoot+Thymeleaf文件上传demo的整合。
- 介绍对文件类型,文件名长度等判断方法。
一、SpringBoot对文件处理相关自动配置
自动配置是SpringBoot为我们提供的便利之一,开发者可以在不作任何配置的情况下,使用SpringBoot提供的默认设置,如处理文件需要的MultipartResolver。
1 | less复制代码@Configuration(proxyBeanMethods = false) |
- Spring3.1之后支持StandardServletMultipartResolver,且默认使用StandardServletMultipartResolver,它的优点在于:使用Servlet所提供的功能支持,不需要依赖任何其他的项目。
- 想要自动配置生效,需要配置spring.servlet.multipart.enabled=true,当然这个配置默认就是true。
- 相关的配置设置在MultipartProperties中,其中字段就是对应的属性设置,经典字段有:enabled:是否开启文件上传自动配置,默认开启。location:上传文件的临时目录。maxFileSize:最大文件大小,以字节为单位,默认为1M。maxRequestSize:整个请求的最大容量,默认为10M。fileSizeThreshold:文件大小达到该阈值,将写入临时目录,默认为0,即所有文件都会直接写入磁盘临时文件中。resolveLazily:是否惰性处理请求,默认为false。
- 我们也可以自定义处理的细节,需要实现MultipartResolver接口。
二、处理上传文件MultipartFile接口
SpringBoot为我们提供了MultipartFile强大接口,让我们能够获取上传文件的详细信息,如原始文件名,内容类型等等,接口内容如下:
1 | csharp复制代码public interface MultipartFile extends InputStreamSource { |
三、SpringBoot+Thymeleaf整合demo
1、编写控制器
1 | java复制代码/** |
2、编写页面file.html
1 | xml复制代码<html xmlns:th="http://www.thymeleaf.org"> |
3、编写页面uploadStatus.html
1 | xml复制代码<!--suppress ALL--> |
4、编写配置
1 | ini复制代码server.port=8081 |
5、配置虚拟路径映射
这一步是非常重要的,我们将文件上传到服务器上时,我们需要将我们的请求路径和服务器上的路径进行对应,不然很有可能文件上传成功,但访问失败:
1 | java复制代码@Configuration |
对应关系需要自己去定义,如果访问失败,可以试着打印以下路径,看看是否缺失了路径分隔符。
注意:如果addResourceHandler不要写成处理/**,这样会拦截掉其他的请求
6、测试页面
执行mvn spring-boot:run,启动程序,访问http://localhost:8081/,选择文件,点击上传按钮,我们的项目目录下出现了mongo.jpg,并且页面也成功显示:
四、SpringBoot的Restful风格,返回url
1 | arduino复制代码/** |
看完三件事❤️
如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注公众号 『 java烂猪皮 』,不定期分享原创知识。
- 同时可以期待后续文章ing🚀
- .关注后回复【666】扫码即可获取学习资料包
本文转载自: 掘金