一. 概述
文件上传是开发中比较常见的功能之一.但是SpringBoot并没有提供特别的文件上传技术,而是依赖于SpringMVC的文件上传技术.在SpringBoot中集成了SpringMVC的很多常用功能,也包含了文件上传部分,实现起来没有太多的区别.
本章节我们就讲解如何在Spring Boot中实现文件文件上传.
1. MultipartFile简介
在SpringMVC时代,提供了MultipartFile这个封装类,它包含了文件的二进制流和文件相关属性(文件名、大小等),而在Spring Boot中也是使用此封装类进行文件上传的.
MultipartFile是个接口,它的实现类有CommonsMultipartFile和StandardMultipartFile,这里简单说明:
1️⃣. CommonsMultipartFile: 是基于apache fileupload的解析;
2️⃣. StandardMultipartFile: 是基于j2ee自带的文件上传进行解析,也就是使用Servlet3.0提供的javax.servlet.http.Part上传方式.
我们在正常使用MultipartFile时,无需关心底层是以哪种方式进行文件上传处理的,SpringMVC会给我们做相应的转换.
byte[] getBytes(): 获取文件数据;String getContentType(): 获取文件MIME类型,如application/pdf、image/pdf等;InputStream getInputStream(): 获取文件流;String getOriginalFileName(): 获取上传文件的原名称;long getSize(): 获取文件的字节大小,单位为byte;boolean isEmpty(): 是否上传的文件是否为空;void transferTo(File dest): 将上传的文件保存到目标文件中
2. 注意:
要想实现文件上传,必须将表单的method设置为post,并将enctype设置为multipart/form-data.只有这样,浏览器才会把用户所选择文件的二进制数据发送给服务器.SpringMVC在文件上传时,会将上传的文件映射为MultipartFile对象,并对MultipartFile对象进行文件的解析和保存.