Spring中的MultipartFile详解

 更新时间:2024年01月04日 10:35:50   作者:时间不会赖着不走  
这篇文章主要介绍了Spring中的MultipartFile详解,随着Spring框架的崛起,使用Spring框架中的MultipartFile来处理文件也是件很方便的事了,今天就为大家带来剖析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异常。该方法在实际项目开发中使用较少。文件上传主要是用这个方法实现!

到此这篇关于Spring中的MultipartFile详解的文章就介绍到这了,更多相关MultipartFile详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)

    详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)

    这篇文章主要介绍了java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 实现了基于TCP的Java Socket编程实例代码

    实现了基于TCP的Java Socket编程实例代码

    这篇文章主要介绍了基于TCP的Java Socket编程实例代码,有需要的朋友可以参考一下
    2013-12-12
  • Java 多线程并发LockSupport

    Java 多线程并发LockSupport

    这篇文章主要介绍了Java 多线程并发LockSupport,LockSupport 类是用于创建锁和其他同步类的基本线程阻塞原语,更多相关内容需要得小伙伴可以参考一下下面文章内容
    2022-06-06
  • Springboot的yml配置文件用法

    Springboot的yml配置文件用法

    这篇文章主要介绍了Springboot的yml配置文件用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • RocketMQ producer发送者浅析

    RocketMQ producer发送者浅析

    RocketMQ生产者是一种高性能、可靠的消息发送者,能够将消息快速、可靠地发送到RocketMQ消息队列中。它具有多种消息发送模式和消息发送方式,可以根据不同的业务需求进行灵活配置
    2023-04-04
  • springboot之Validation参数校验详细解读

    springboot之Validation参数校验详细解读

    这篇文章主要介绍了springboot之Validation参数校验详细解读,本篇是关于springboot的参数校验知识,当然也适用其它java应用,读完本篇将学会基本的参数校验,自定义参数校验和分组参数校验,需要的朋友可以参考下
    2023-10-10
  • java 迭代器模式实例详解

    java 迭代器模式实例详解

    这篇文章主要介绍了java 迭代器模式实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • java File类的基本使用方法总结

    java File类的基本使用方法总结

    这篇文章主要介绍了java File类的基本使用方法总结,为大家分享了java实现上传代码,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • spring消息转换器使用详解

    spring消息转换器使用详解

    这篇文章主要为大家详细介绍了spring消息转换器的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Java中的ArrayList集合源码解析

    Java中的ArrayList集合源码解析

    这篇文章主要介绍了Java中的ArrayList集合源码解析,ArrayList是一种以数组实现的List,与数组相比,它具有动态扩展的能力,因此也可称之为动态数组,需要的朋友可以参考下
    2023-12-12

最新评论