上篇已经写了spring boot 2 上传附件文件过大时,没法捕捉异常,但在我另外一个项目中,还是不起作用。
另外一个项目用的是spring boot 1.5,用的是tomcat.
解决办法如下:
- 解决多次进入全局异常的办法
修改tomcat的maxSwallowSize配置
@Bean
public EmbeddedServletContainerFactory tomcatEmbedded() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
// connector other settings...
// configure maxSwallowSize
if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {
// -1 means unlimited, accept bytes
((AbstractHttp11Protocol<?>)
connector.getProtocolHandler()).setMaxSwallowSize(-1);
}
});
return tomcat;
}
加上上述代码,异常只进入了一次
- 解决接口正常,但前端没办法获取返回值的办法。
现在接口没有多次进入了,但前端接收到的返回值为空,查了很多,都没找到解决办法。
最后放弃了,直接使用common-upload;
- 先禁用spring boot原生的上传
spring:
multipart:
enabled: false
- 增加对上传文件大小的限制
@Configuration
public class AttachmentConfiguration {
@Value("${spring.http.multipart.max-file-size}")
private String maxFileSize;
@Value("${spring.http.multipart.max-request-size}")
private String maxRequestSize;
@Bean
public MultipartConfigElement configElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize(maxFileSize);
factory.setMaxRequestSize(maxRequestSize);
return factory.createMultipartConfig();
}
}
至此,上传问题已解决。前后端均能正常的处理.
网友评论