龙空技术网

解决Spring Boot中“Maximum upload size exceeded”文件上传限制

坤哥万科技 148

前言:

现时你们对“apache上传文件限制”可能比较关心,你们都需要了解一些“apache上传文件限制”的相关资讯。那么小编同时在网摘上网罗了一些关于“apache上传文件限制””的相关知识,希望你们能喜欢,朋友们快快来了解一下吧!

在开发业务系统时,文件上传是一个常见且重要的功能,大家有没有遇到过文件过大上传失败的问题。

本次遇到的是文件上传超出默认限制大小,导致上传失败,特此记录。

问题描述

实现了一个上传压缩包的接口,自测时发现当压缩包文件较大时,上传失败:

报错:

Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field zipFile exceeds its maximum permitted size of 1048576 bytes.

后端报错如下:

从报错信息可以看出是文件超出默认限制大小了(1048576 bytes,即1M)。如何解决?

问题解决方案1:配置调整文件上传限制

最简单的方法是在 Spring Boot 的 application.properties 或 application.yml 中调整文件上传的限制。

如果是 application.properties 添加配置:

spring.servlet.multipart.max-file-size=10MBspring.servlet.multipart.max-request-size=10MB

如果是 application.yml 添加配置:

spring:  servlet:    multipart:      max-file-size: 10MB      max-request-size: 10MB

如果是Apollo等配置中心,和application.properties一样直接加配置即可。

方案2:java 代码设置

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.boot.web.servlet.MultipartConfigFactory;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.web.multipart.commons.CommonsMultipartResolver;import javax.servlet.MultipartConfigElement;@Configurationpublic class FileUploadConfig {    @Bean    public MultipartConfigElement multipartConfigElement() {        MultipartConfigFactory factory = new MultipartConfigFactory();        factory.setMaxFileSize("10MB");        factory.setMaxRequestSize("10MB");        return factory.createMultipartConfig();    }}
思考

1、tomcat为什么要限制文件大小?

其实主要原因还是为了保护服务器的资源和稳定性。

毕竟上传大文件会消耗大量的服务器资源(内存、磁盘空间、CPU),限制大小可以避免这个问题,保持服务器的性能,确保能够快速响应其它请求,提升整体的服务质量。

2、其实tomcat对http的post请求默认接收大小是2M的限制,但是 Spring Boot 项目超过1M就报错了?

默认情况下,Tomcat 使用 maxPostSize 和 maxSwallowSize 配置项来设置请求和上传文件的大小,默认都是2M,设置为 -1,则表示不限制。

但是Spring Boot 默认的文件上传配置通常是1M,比 Tomcat 的默认配置更严,所以Spring Boot 的限制已经提前触发了错误。

标签: #apache上传文件限制