Spring Boot的上传下载

上传

有两个需要注意的点:

  • 表单的method设置为post
  • 负责上传文件的表单和一般表单有一些区别,enctype设置为 multipart/form-data

设置为 multipart/form-data是为了让浏览器采用二进制流的方式来处理表单数据
对于SpringMVC使用基于Apache Commons FileUpload技术实现 了CommonsMultipartResolver

Spring Boot引入pom依赖

<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
 </dependency>

html界面:
在这里插入图片描述
在这里插入图片描述
Controller层:
在这里插入图片描述
SpringMVC会将上传文件绑定到 MultipartFile 对象里面。MutipartFile提供了很多方法,
其中 transferTo() 可以将文件保存在磁盘中。
重点方法如下:

  • byte[] getBytes():获取文件数据。
  • String getContentType():获取文件MIME类型,如image/jpeg等。
  • InputStream getInputStream():获取文件流。
  • String getName():获取表单中文件组件的名字。
  • String getOriginalFilename():获取上传文件的原名。
  • long getSize():获取文件的字节大小,单位为byte。
  • boolean isEmpty():是否有上传的文件。
  • void transferTo(File dest):将上传文件保存到一个目标文件当中

如果需要将上传的信息显示出来,那就需要以对象的形式接收文件了

首先需要一个POJO类

在这里插入图片描述
User是上传信息的一个封装,file属性对应html的file类型,类型为MultipartFile,上传是会自动绑定到该属性当中

controller层

在这里插入图片描述
register方法使用@ModelAttribute注解将表单参数绑定到User对象,html控件的username会保存到User的Username,html的file会保存到file属性,转化为MultipartFile类型
上传成功后将用户信息保存到model中,供跳转到下一个页面显示
在这里插入图片描述

=================================================================================
在这里插入图片描述

下载

下载就是直接页面上给个超链接,该链接的href属性为下载文件的文件名。
SpringMVC提供一个ReponseEntity 可以很方便滴定义返回的httpheaders和httpstatus

controller

在这里插入图片描述

download处理方法接收页面传递的文件名filename后,使用Apache Commons FileUpload组件的FileUtils读取项目的上传文件,并将其构建成ResponseEntity对象返回客户端下载。
使用ResponseEntity对象,可以很方便的定义返回的HttpHeaders和HttpStatus。上面代码中的MediaType,代表的是Internet Media Type,即互联网媒体类型,也叫做MIME类型。在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。HttpStatus类型代表的是Http协议中的状态。有关MediaType和HttpStatus类可以参考Spring MVC的API文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值