深入理解MultipartFile,以更优雅的方式处理文件

深⼊理解MultipartFile,以更优雅的⽅式处理⽂件
Hello,⼤家好,我是Steafan_,这⼏天有时间我就来更新博客了,话不多说直⼊正题。
在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格式的⽂件转换为输⼊流。
(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异常。该⽅法在实际项⽬开发中使⽤较少。
我们以上传⼀张图⽚⽂件为例,分别来看⼀下调⽤不同⽅法所获取到的数据,如下图2.2所⽰:
图2.2 MultipartFile常⽤⽅法获取数据打印结果
三、MultipartFile的⼀些使⽤技巧
汽车覆盖件模具(1)我们在使⽤MultipartFile作为参数传递的时候,可以将MultipartFile声明为⼀个数组,这样就能⽀持多⽂件传输,如果只需要传输⼀个⽂件,则去掉数组就好了。
(2)可以根据MultipartFile的getSize⽅法来获取到传输⽂件的⼤⼩,这样就能限定传输过来的⽂件的⼤⼩了。
可以在我的github中看到MultipartFile的实战代码:
以上就是本篇博⽂的全部内容,有不懂的地⽅欢迎留⾔评论,感谢各位朋友关注

本文发布于:2024-09-21 13:28:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/232141.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:传输   名称   接收   内容   表单   定义   形式
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议