Spring中的MultipartFile详解

简介: Spring中的MultipartFile详解

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站点击跳转浏览。


     在Java中处理文件向来是一种不是很方便的操作,然后随着Spring框架的崛起,使用Spring框架中的MultipartFile来处理文件也是件很方便的事了,今天就为大家带来剖析MultipartFile的神秘面纱。MultipartFile本身并没有很复杂的结构,也正是他强力封装了很多便捷的api才引来很多人的使用。


一、概述


    MultipartFile为org.springframework.web.mutipart包下的一个类,也就是说如果想使用MultipartFile这个类就必须引入spring框架,换句话说,如果想在项目中使用MultipartFile这个类,那么项目必须要使用spring框架才可以,否则无法引入这个类。MultipartFile翻译成中文来讲就是“多组件的文档”,不用太在乎他的中文含义,一般来讲使用MultipartFile这个类主要是来实现以表单的形式进行文件上传功能


二、理解什么是MultipartFile


     要想真正理解什么是MultipartFile,我们就需要从源码角度进行分析和理解。接下来我将一步一步对MultipartFile进行源码解读,这可以使得我们更系统的理解MultipartFile。

1、MultipartFile类的注释说明

MultipartFile类的注释说明截图如下图1.1所示:



图1.1 MultipartFile注释说明

     第一句:一种可以接收使用多种请求方式来进行上传文件的代表形式。也就是说,如果你想用spring框架来实现项目中的文件上传功能,则MultipartFile可能是最合适的选择,而这里提到的多种请求方式则可以通俗理解为以表单的形式提交。

     第二句:这个文件内容可以存储到内存中或者存储在磁盘的临时位置上。

     第三句:无论发生哪种情况,用户都可以自由地拷贝文件内容到session存储中,或者以一种永久存储的形式进行存储,如果有需要的话。

     第四句:这种临时性的存储在请求结束之后将会被清除掉。


2、MultipartFile常用方法解析


     首先MultipartFile是一个接口,并继承自InputStreamSource,且在InputStreamSource接口中封装了getInputStream方法,该方法的返回类型为InputStream类型,这也就是为什么MultipartFile文件可以转换为输入流。通过以下代码即可将MultipartFile格式的文件转换为输入流。


multipartFile.getInputStream();

(1)、getName方法


     getName方法获取的是前后端约定的传入文件的参数的名称,在SpringBoot后台中则是通过@Param(“uploadFile”) 注解定义的内容。值得一提的是,我们来看一下该方法的注释,如下图2.1所示:


         

图2.1 getName方法源码截图

     从上图的return中可以看出,返回的name值从来不是null或者空,也就是说如果使用MultipartFile来接收文件,那么@Param(“uploadFile”)定义的接收文件的名称则必不可少,这样才能接收到文件,如果没有定义@Param(“uploadFile”),则接收不到文件。


(2)、getOriginalFileName方法


     getOriginalFileName方法获取的是文件的完整名称,包括文件名称+文件拓展名。


(3)、getContentType方法


     getContentType方法获取的是文件的类型,注意是文件的类型,不是文件的拓展名。


(4)、isEmpty方法


     isEmpty方法用来判断传入的文件是否为空,如果为空则表示没有传入任何文件。


(5)、getSize方法


     getSize方法用来获取文件的大小,单位是字节。


(6)、getBytes方法


     getBytes方法用来将文件转换成一种字节数组的方式进行传输,会抛出IOException异常。


(7)、getInputStream方法


     getInputStream方法用来将文件转换成输入流的形式来传输文件,会抛出IOException异常。


(8)、transferTo方法


     transferTo方法用来将接收文件传输到给定目标路径,会抛出IOException、IllegalStateException异常。该方法在实际项目开发中使用较少。文件上传主要是用这个方法实现!


结语


🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。

🔥One person can acquire knowledge, but wisdom is formed only in the exchange with others.

🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,


我们下期再见。

相关文章
|
10月前
|
Web App开发 XML Java
SpringMVC使用MultipartResolver和MultipartFile实现文件上传
SpringMVC使用MultipartResolver和MultipartFile实现文件上传
656 0
|
JSON Java 数据格式
|
3月前
|
Java Spring
Spring Boot Application in default package
Spring Boot Application in default package
|
5月前
|
Java Spring
解决SpringBoot中@RequestBody不能和Multipart同时传递的问题
请根据你的实际需求选择上述方法之一来解决Spring Boot中 `@RequestBody`不能和 `Multipart`同时使用的问题。
648 1
|
12月前
|
前端开发 JavaScript Java
解决Spring Boot文件上传问题:`MultipartException` 和 `FileUploadException`
解决Spring Boot文件上传问题:`MultipartException` 和 `FileUploadException`
693 0
|
存储 前端开发 Java
MultipartFile实现文件上传和下载(Springboot)
MultipartFile实现文件上传和下载(Springboot)
513 0
|
12月前
|
安全 Java Go
解决Spring Data JPA中的NullPointerException问题
解决Spring Data JPA中的NullPointerException问题
244 0
|
12月前
|
存储 缓存 Java
【Java异常】org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet requ
【Java异常】org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet requ
291 0
Springboot byte[] 转 MultipartFile ,InputStream 转 MultipartFile
Springboot byte[] 转 MultipartFile ,InputStream 转 MultipartFile
1092 0
|
缓存 Java Spring
详解SpringMVC使用MultipartFile实现文件的上传
详解SpringMVC使用MultipartFile实现文件的上传
详解SpringMVC使用MultipartFile实现文件的上传