因为工作中的业务需要,需要将file转换为Spring专有的MultipartFile。

  • 过程
  • 结论

过程

spring通过MultipartFile来实现文件上传,查看相关的源码后,会发现原理十分简单。
首先,打开MultipartFile,发现这是一个接口,其中定义了一些关于file的处理方法。

看到此接口的实现类有如下几个,分别来看一下。

  • 打开StandardMultipartFile,发现这是一个私有内部类,外部类是StandardMultipartHttpServletRequest。然看查看相关调用代码,发现MultipartFile的基本作用,将request中的file封装为StandardMultipartFile,用于后续处理。
  • 然后是CommonsMultipartFile,这个类有没有很熟悉?在spring中需要对上传文件大小进行限制时,可以通过在配置文件中对CommonsMultipartFileResolve Bean相关属性进行注入来设置。打开CommonsMultipartFileResolve源码,也确实发现是通过CommonsMultipartFile来处理的。spring Web默认使用CommonsMultipartFile来处理文件上传。
//CommonsFileUploadSupport 是CommonsMultipartResolver的抽象父类
//spring Web默认使用CommonsMultipartFile来处理文件上传
public abstract class CommonsFileUploadSupport {protected MultipartParsingResult parseFileItems(List<FileItem> fileItems, String encoding) {for (FileItem fileItem : fileItems) {if (fileItem.isFormField()) {//无关代码省略} else {// multipart file fieldCommonsMultipartFile file = new CommonsMultipartFile(fileItem);multipartFiles.add(file.getName(), file);}}}}
}
  • 列表内容最后看一下MockMultipartFile,发现在spring-test Jar包中,是对MultipartFile的一个简单实现。

结论

MultipartFile是spring中定义的一个接口,file是无法转换为multipartfile的。但是可以定义一个具体类,并实现MultipartFile,用具体类将file进行封装,将file封装为MultipartFile。
如果系统中有spring-test jar包,则可以直接使用MockMultipartFile。

file 转换MultipartFile相关推荐

  1. 文件上传至将File转换成MultiPartFile

    在文件上传业务上需要将文件上传至将File转换成MultiPartFile的时候,我搜索得到采用MockMultipartFile这个类可以轻松的转换. 但是,当我准备使用的时候,坑出现了.它是spr ...

  2. JAVA 将MultipartFile file转换成为File

    public static File MultipartFileToFile(MultipartFile multiFile) {// 获取文件名String fileName = multiFile ...

  3. java将图片的url转换成File,File转换成二进制流byte

    package com.xqy;import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //java将图片的 ...

  4. File和MultipartFile互转

    /*** MultipartFile 转 File** @param multipartFile* @throws Exception*/public static File MultipartFil ...

  5. File转MultipartFile格式

    File转MultipartFile格式 方法一:MultipartFile转成File需要借助org.springframework.mock.web.MockMultipartFile 使用方法为 ...

  6. File转换成MultiPartFile

    通过FileItem对象获得CommonsMultipartFile对象再转换成MultiPartFile对象 MultipartFile mfile = new CommonsMultipartFi ...

  7. Java 将File转换为MultipartFile类型

    首先转换时需要用到commons-fileupload-1.3.2.jar包,若项目中没有就先加入jar包,实现代码如下: 1.根据File创建FileItem import java.io.File ...

  8. vue 文件转换二进制_vue项目将file转换成二进制流

    前端在新增数据时,需要将附件和表单数据一起上传,此时需要将文件转换成二进制流传给后端.记录将文件转换成二进制流 ref="uploadProduct" class="up ...

  9. File 转 MultipartFile

    前言:很多朋友都喜欢用spring的MultipartFile传文件,不过也确实强大.但如果我们收到的是file该怎么办?我们这就来解决 直接来例子 moke的jar包地址: https://mvnr ...

最新文章

  1. 安装mayavi和VTK库的血泪史
  2. eureka服务下线事件监听(自定义处理逻辑)
  3. 使用HttpMessageConverter实现HTTP的序列化和反序列化
  4. 高效万进制——蓝桥杯|HDOJ 1002 大数加法——30行代码AC
  5. 程序员利用Python破解老婆撤回的消息,这样竟然还有老婆?
  6. 二叉树题目----6 二叉树的最近公共祖先 AND 二叉树搜索树转换成排序双向链表
  7. 高密自智,体小量大,希捷Exos Corvault存储系统为数据洞察赋能
  8. 16个简单实用的.htaccess技巧
  9. 在保存Bitmap的时候出现“GDI出现一般性错误”
  10. Linux操作系统基础知识学习
  11. 【微信小程序制作模板套用】小程序模板如何合理选择?
  12. 计算机玩游戏重启,为什么我的电脑玩游戏的时候会不定时的自动重启?
  13. UE4 替换文件尝试解决 光照构建失败 Lighting build failed. Swarm failed to kick off
  14. html自定义图例,自定义 highcharts 图例之 symbol
  15. Windows系统安全配置
  16. C++ using的用法
  17. 2021华为软挑部分答疑——哪些你有错却总是找不到的地方,我来带你找啦(含标准输入代码)
  18. Warpspeed 2021 DFINITY×IAF黑客松Demo Day落幕,10支队伍获奖
  19. Java编程思想读书笔记——多态
  20. 北京市委宣传部所属事业单位招聘工作人员公告-北京市委-宣传部-事业单位

热门文章

  1. uIP中文协议文档:Ch01
  2. 关于C++ delete 来释放new分配的内存
  3. 32个Python爬虫项目实战
  4. 毕设 JAVA.JSP网上学习答疑系统论文
  5. chatbot使用_如何使用Python构建Chatbot项目
  6. 【VBS教程3】:VBS如何激活指定窗口
  7. c#操作word图表(一)
  8. 求求你们,这次不要放过东北
  9. 视频压缩编码和解码(转)
  10. 介绍Mybatis与使用(什么是Mybatis?)