springboot 使用multipartFile上传文件,报错java.lang.IllegalArgumentException: Expected MultipartHttpServletRe...

问题重现:

springboot项目本地运行正常,上传文件正常;打war包后,部署weblogic后不能正常访问,上传选择文件后点击确认页面提示“Expected MultipartHttpServletRequest: is a MultipartResolver configured?” 后台报错

938360-20190730113912795-1732791757.png

问题分析:

因为找不到multipartReslover的原因,在springMVC配置文件配置它的时候,不能用其他名字,只能用指定名字,否则就出现这种找不到的错误

springboot项目是有自动配置的自动配置类为:MultipartAutoConfiguration

 @Bean(
        name = {"multipartResolver"}
    )
    @ConditionalOnMissingBean({MultipartResolver.class})
    public StandardServletMultipartResolver multipartResolver() {
        return new StandardServletMultipartResolver();
    }

代码可以看出配置的multipartResoler并没有问题,问题在由默认配置使用的是StandardServletMultipartResolver,而项目需要部署到11G的weblogic上,servlet的版本是2.5,是只能使用commons-fileupload。maven配置如下,这样就有问题了,部署到weblogic上后使用的就不再是StandardServletMultipartResolver,而是CommonsMultipartResolver

<!--使用multipartFile上传,需要引这两个包-->
<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.3</version>
</dependency>
<dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
</dependency>

解决方法:

定义一个multipartResoler的Bean替换自动配置中的Bean

代码如下:

    @Bean
    public CommonsMultipartResolver multipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setDefaultEncoding("UTF-8");
        multipartResolver.setMaxUploadSize(104857600);
        return multipartResolver;
    }

注意配置此Bean必须在有注解@Configuration的类中,我这里直接将此Bean配置到启动类XxxxxxApplication中.

转载于:https://www.cnblogs.com/bijizhixing/p/11269087.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值