springboot作为接收multipart/form-data的服务端存在一些问题,需要进行配置。

Spring Boot会自动解析multipart/form-data格式的request,手动解析需配置。猜测MultipartResolver默认自动解析request并清空文件流内容,设置multipartResolver.setResolveLazily(true)则不会自动解析,代码核心为此句,还可推测Spring Boot内置文件解析对象名为multipartResolver。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot自动会对multipart/form-data格式的request进行解析,而其中的inputstream会被框架拿走,之后手动解析就不能了。因此需要配置。具体并不是很了解,但是以下代码在我的环境中是可用的。copy下来作为参考,需要的同学请拿走。

手动配置一个配置类,即@Configuration,之后写入一下内容,似乎是因为:

猜测:MultipartResolver在initBinder的时候默认会自动解析request,并清空文件流里的内容,导致在controller中的request获取不到文件流信息,当设置multipartResolver.setResolveLazily(true);则不会自动解析。

这部分code 的核心就是,multipartResolver.setResolveLazily(true); 这一句代码。

而也可以推测,SpringBoot的内置的文件解析的对象的名字,就是:multipartResolver

以下为代码:

package com.example.theserver.restfulAPI;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Configuration
public class UploadConfig {
    //显示声明CommonsMultipartResolver为mutipartResolver
    @Bean(name = "multipartResolver")
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setDefaultEncoding("UTF-8");
        //resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
        resolver.setResolveLazily(true);
        resolver.setMaxInMemorySize(40960);
        //上传文件大小 100M 100*1024*1024
        resolver.setMaxUploadSize(100 * 1024 * 1024);
        return resolver;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值