Spring 迁移:在 StandardServletMultipartResolver 上设置默认编码

问题描述 投票:0回答:1

我正在将 Spring 5 应用程序迁移到 Spring 6。在旧代码中,我使用

CommonsMultipartResolver
作为
MultipartResolver
-Bean。从 Spring 6 开始,
CommonsMultipartResolver
消失了,我必须使用
StandardServletMultipartResolver
,但是这个类没有以前使用过的
setDefaultEncoding
方法。实现相同行为的新推荐方法是什么?

我用谷歌搜索,但只能找到旧版

CommonsMultipartResolver
的文件大小相关方法的迁移指南。

java spring migration multipart
1个回答
0
投票

同样的事情发生在我身上,我也删除了 commons-fileupload 和 commons-io 依赖

1 在 Spring 配置文件中定义 StandardServletMultipartResolver bean

@Bean 
public StandardServletMultipartResolver multipartResolver() 
{ 
    return new StandardServletMultipartResolver(); 
}

为了解析多部分请求,我们需要在 DispatcherServlet 注册中设置一个 MultipartConfigElement :

public class Initializer implements WebApplicationInitializer {

    private static final String DISPATCHER_SERVLET_NAME = "dispatcher";

    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(AppConfig.class);
        servletContext.addListener(new ContextLoaderListener(ctx));
        ctx.setServletContext(servletContext);
        ctx.getEnvironment().setActiveProfiles(servletContext.getInitParameter(SPRING_ACTIVE_PROFILE));
        ServletRegistration.Dynamic servlet = servletContext.addServlet(DISPATCHER_SERVLET_NAME, new DispatcherServlet(ctx));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
        servlet.setMultipartConfig(new MultipartConfigElement("", 50000000, 50000000, 0));
    }
}

您可以为文件上传指定 MAXSIZE

© www.soinside.com 2019 - 2024. All rights reserved.