MultipartFile工具类(方法详解)

MultipartFile工具类(方法详解)本篇案例学习 MultipartFil 工具类 案例超详细 深入浅出学习相关知识点

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿你们奔赴在各自的热爱中…








最近项目一直在接触和文件上传相关的知识,趁最近忙里偷闲,那就从基础开始一点点的整理相关知识吧!
在这里插入图片描述

首先我们要认识一下Java中的流

1、“流”是一个抽象的概念,它是对输入输出设备的一种抽象理解,在java中,对数据的输入输出操作都是以“流”的方式进行的。

2、“流”具有方向性,输入流、输出流是相对的。当程序需要从数据源中读入数据的时候就会开启一个输入流,相反,写出数据到某个数据源目的地的时候也会开启一个输出流。

3、数据源可以是文件、内存或者网络等。


接着我们一起看看:MultipartFile工具

MultipartFile是SpringMVC提供简化上传操作的工具类。

在不使用框架之前,都是使用原生的HttpServletRequest来接收上传的数据,文件是以二进制流传递到后端的,然后需要我们自己转换为File类。使用了MultipartFile工具类之后,我们对文件上传的操作就简便许多了。

来学习一下MultipartFile工具类全部的接口方法(我已经备注好了哈哈)

package org.springframework.web.multipart; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import org.springframework.core.io.InputStreamSource; import org.springframework.core.io.Resource; import org.springframework.lang.Nullable; import org.springframework.util.FileCopyUtils; public interface MultipartFile extends InputStreamSource { 
     //getName() 返回参数的名称 String getName(); //获取源文件的昵称 @Nullable String getOriginalFilename(); //getContentType() 返回文件的内容类型 @Nullable String getContentType(); //isEmpty() 判断是否为空,或者上传的文件是否有内容 boolean isEmpty(); //getSize() 返回文件大小 以字节为单位 long getSize(); //getBytes() 将文件内容转化成一个byte[] 返回 byte[] getBytes() throws IOException; //getInputStream() 返回InputStream读取文件的内容 InputStream getInputStream() throws IOException; default Resource getResource() { 
     return new MultipartFileResource(this); } //transferTo(File dest) 用来把 MultipartFile 转换换成 File void transferTo(File var1) throws IOException, IllegalStateException; default void transferTo(Path dest) throws IOException, IllegalStateException { 
     FileCopyUtils.copy(this.getInputStream(), Files.newOutputStream(dest)); } } 

InputStreamSource 这个接口本质上返回的还是一个InputStream 流对象

package org.springframework.core.io; import java.io.IOException; import java.io.InputStream; public interface InputStreamSource { 
     //定位并打开资源,返回资源对应的输入流。 //每次调用都会返回新的输入流,调用者在使用完毕后必须关闭该资源。  InputStream getInputStream() throws IOException; } 

正常的文件上传接口你可以写一些帮助类这样就可以帮助你更好的筛选文件了,当然很多条件最好在前端也完成,这里我分享过el-upload组件可以简单参考

Element-UI中el-upload上传组件(demo详解)

比如:你要现在文件类型,大小等等都可以上传组件完成限制,这样减轻服务器的压力

当然Java中也可以写一些校验相关的帮助类,帮助我们筛选,如下:仅供参考

//简单的分享一下吧,仅仅给参考 private String validateImg(MultipartFile file) { 
     if (file == null) { 
     throw new RuntimeException("图片不能为空"); } if (file.getSize() >= 20 * 1024 * 1024) { 
     throw new RuntimeException("图片大小超出最大限制"); } boolean isPic = FileUtil.isPic(file.getOriginalFilename()); if (!isPic) { 
     throw new RuntimeException("图片格式错误"); } String fileName = Objects.requireNonNull(file.getOriginalFilename()).length() > 50 ? file.getOriginalFilename().substring(0, 50) : file.getOriginalFilename(); return fileName; } 

The best investment is to invest in yourself.

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞? 关注❤️ 分享? 留言?thanks!!!

2020.12.31 22:36 马上2021年了,祝大家在新的一年有更多的进步,愿你们奔赴在自己的热爱里!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198256.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:28
下一篇 2026年3月26日 下午3:28


相关推荐

  • Tortoise SVN 1.8.11怎么汉化

    Tortoise SVN 1.8.11怎么汉化划重点 汉化包和 TortoiseSVN 必须要相同 否则安装无效 安装前要想将 svn 安装目录下的 languages 目录下的文件全部删除 汉化包安装要放在 svn 安装目录下进行安装 它才能正常汉化 具体安装目录看个人 C ProgramFiles TortoiseSVN Languages1 右键 选择 TortoiseSVN gt Settings 设置 2 点击 chec

    2026年3月17日
    1
  • ASCII码为0x01,0x02作为分隔符(这两个字符是键盘无法输入的)

    ASCII码为0x01,0x02作为分隔符(这两个字符是键盘无法输入的)不知道大家在拼接字符串的时候是怎么做的 是不是采用 或 nbsp 这样做有的时候不很安全 因为你不能确保你传入的字符串中没有这几个字符 那怎么做能保证万无一失呢 nbsp ASCII 码为 0x01 0x02 的字符是键盘所不能输入的 这两个字符称作隐藏字符 对应的 8 进制是 001 002 打印出来的视觉效果与空格相同 但是相比空格的好处就是这两个字符是从键盘无法输入的 所以避免了如果数据中本身带空格 会错误的分割字符

    2026年3月17日
    2
  • 8421 BCD码 加减校正[通俗易懂]

    8421 BCD码 加减校正[通俗易懂]8421码是一种常见的BCD(Binary-CodedDecimal)码,它用4个二进制位表示1个十进制位:00000001001000110100010101100111100010011010…11110123456789x…x例如:我们要表示5和15,使用二进制编码5 -101 15 -1111…

    2025年7月5日
    8
  • 6款国产AI音乐生成神器,你还不知道就out了!

    6款国产AI音乐生成神器,你还不知道就out了!

    2026年3月13日
    3
  • 北美CS四大名校(美国前四大城市)

    1.北美CS方面三个梯队总体上讲Top20的计算机方向可以分成三个梯队:一、4个最为优秀的computerscienceProgram是麻省理工大学MIT,斯坦福大学Stanford,加州伯克莱分校UC.Berkeley和卡奈基梅隆CMU。这四家基本没什么争议,得到大家的广泛认可。二、6个其他前十的computerscience:UIUC,康乃尔大学Cornell,华盛顿大学U.o

    2022年4月12日
    113
  • shell遍历根目录_efi shell 命令中如何返回上级目录和根目录?[通俗易懂]

    shell遍历根目录_efi shell 命令中如何返回上级目录和根目录?[通俗易懂]下面是efishell的帮助信息。你对比看看吧(我看了下,这里的根是\符号)。ThiscommandcdchangesthecurrentworkingdirectorythatisusedbytheEFIShellenvironment.ConventionDescription.Referstothecurrentdir…

    2022年7月24日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号