springboot(十七):使用Spring Boot上传文件

举报
孔皮皮 发表于 2019/10/26 23:51:52 2019/10/26
【摘要】 上传文件是互联网中经常应用的场景之一,最典型的情况就是上传头像等,今天就带着大家做一个Spring Boot上传文件的小案例。1,pom包配置我们使用Spring Boot最新版本1.5.9,jdk使用1.8,tomcat8.0。约会了 spring-boot-starter-thymeleaf做页面模板引擎,写一些简单的上传示例。2,启动类设置tomcatEmbedded这段代码是为了解...

上传文件是互联网中经常应用的场景之一,最典型的情况就是上传头像等,今天就带着大家做一个Spring Boot上传文件的小案例。

1,pom包配置

我们使用Spring Boot最新版本1.5.9,jdk使用1.8,tomcat8.0。

image.png

约会了  spring-boot-starter-thymeleaf做页面模板引擎,写一些简单的上传示例。

2,启动类设置

image.png

tomcatEmbedded这段代码是为了解决上传文件大于10M出现连接重置的问题。此异常内容GlobalException也捕获不到。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

3,编写前端页面

发布页面

image.png

非常简单的一个Post请求,一个选择框选择文件,一个提交按钮,效果如下:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

发布结果展示页面:

image.png

效果图如下:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

4,编写上传控制类

访问本地自动转发到上传页面:

image.png

发布业务处理

image.png

上面代码的意思就是,通过  MultipartFile读取文件信息,如果文件为空重定向到结果页并提示;如果不为空读取文件流并写入指定目录,最后将结果展示到页面。

MultipartFile是Spring上载文件的封装类,包含了文件的二进制流和文件属性等信息,在配置文件中也可对相关属性进行配置,基本的配置信息如下:

  • spring.http.multipart.enabled=true #默认支持文件上传。

  • spring.http.multipart.file-size-threshold=0 #支持文件写入磁盘。

  • spring.http.multipart.location=#上传文件的临时目录

  • spring.http.multipart.max-file-size=1Mb #最大支持文件大小

  • spring.http.multipart.max-request-size=10Mb #最大支持请求大小

最常用的是最后两个配置内容,限制文件上传大小,上传时超过大小会引发异常:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

5,异常处理

image.png

设置一个使用  @ControllerAdvice监控  Multipart上传的文件大小是否正确,当出现此异常时在前端页面提示  @ControllerAdvice

6,总结

这样一个使用Spring Boot上传文件的简单Demo就完成了,研究的同学可以将示例代码下载下来试试吧。

示例代码:https //github.com/ityouknow/spring-boot-examples


周末推荐电影:《聚焦》一句话来评论:于无声处听惊雷,可在优酷观看。


转载声明:本文转载自公众号【纯洁的微笑】。

原文链接:https://mp.weixin.qq.com/s?__biz=MzI4NDY5Mjc1Mg==&mid=2247484407&idx=1&sn=116397f734eef821ce55f4bf461bfa44&chksm=ebf6db88dc81529e8067ebc4b5051e5754a7204710b26bf286dd43e2bd245a832331d65d41cf#rd


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。