file 转换MultipartFile

因为工作中的业务需要,需要将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 field
                    CommonsMultipartFile 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。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值