我正在将 Spring 5 应用程序迁移到 Spring 6。在旧代码中,我使用
CommonsMultipartResolver
作为 MultipartResolver
-Bean。从 Spring 6 开始,CommonsMultipartResolver
消失了,我必须使用 StandardServletMultipartResolver
,但是这个类没有以前使用过的 setDefaultEncoding
方法。实现相同行为的新推荐方法是什么?
我用谷歌搜索,但只能找到旧版
CommonsMultipartResolver
的文件大小相关方法的迁移指南。
同样的事情发生在我身上,我也删除了 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