>  기사  >  Java  >  SpringBoot의 제한된 업로드 파일 크기 문제를 해결하는 방법

SpringBoot의 제한된 업로드 파일 크기 문제를 해결하는 방법

WBOY
WBOY앞으로
2023-05-16 14:22:126206검색

1. 콘솔 예외

org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:121)
	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:114)

위 예외에서 볼 수 있듯이, 업로드된 파일이 스프링에서 구성한 최대값인 1048576바이트를 초과하기 때문입니다. 파일을 업로드할 때 일반적으로 MultipartFile 인터페이스 클래스를 사용하여 업로드된 파일을 받습니다. MultipartFile 파일의 기본 제한도 1048576바이트(1M)임을 알 수 있습니다.

하지만 대부분의 경우 휴대폰으로 직접 찍는 신분증 사진이나 문서는 기본적으로 2M 이상입니다. 당연히 이는 일상적인 요구 사항을 충족할 수 없으므로 기본 구성 매개변수 크기를 수정해야 합니다.

2. 파일 업로드를 위한 기본 매개변수

SpringBoot 버전마다 해당 설정 매개변수가 다릅니다.

Spring Boot 1.3

    Spring Boot 1.4.x 및 1.5.x
  • spring.http.multipart .maxFileSize

spring.http.multipart.maxRequestSize

    Spring Boot 2.x
  • spring.servlet.multipart.maxFileSize

spring.servlet.multipart.maxRequestSize

3. 솔루션
  • 3.1. 방법 1(구성 파일 .yml 또는 .properties에서 직접 매개 변수 수정)

    예를 들어 제가 사용하는 것은
  • SpringBoot 2.1.3
  • 버전이고, 매개 변수 크기를 직접 설정합니다. 구성 파일에서:

    #做限制的参数配置
    spring:
      servlet:
        multipart:
          enabled: true #默认支持文件上传
          max-file-size: 20MB # 最大支持文件大小
          max-request-size: 30MB # 最大支持请求大小
    
    #不做限制的参数配置
    spring:
      servlet:
        multipart:
          enabled: true #默认支持文件上传
          max-file-size: -1 #不做限制
          max-request-size: -1 #不做限制

    설정 후 프로젝트를 다시 시작하면 파일이 성공적으로 업로드될 수 있습니다.
3.2, 방법 2(custom config 구성 클래스)

원격 구성 파일 센터에서 매개변수를 구성합니다. 구성 프로젝트의 구성 파일에 있으면 방법 1과 동일합니다. 작성할 필요가 없습니다. 이제 별도의 구성 클래스가 원격 구성 센터에서 구성되므로 프로젝트를 다시 시작하지 않고도 임시 필요에 따라 매개변수를 동적으로 수정할 수 있습니다.

일반적인 원격 구성 파일 센터 서비스에는 Nacos, Apollo(Apollo), SpringCloud 등이 포함됩니다. 저는 Nacos 구성 센터 서비스를 사용합니다:

Customized

MultipartFileConfig

Configuration 클래스:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;
import javax.servlet.MultipartConfigElement;

/**
 * @author: 一宿君
 * @date: 2022-03-23 19:18:51
 * @description: 
 */
@Configuration
public class MultipartFileConfig {

    @Value("${config.multifile.maxFileSize}")
    private Long maxFileSize;
    @Value("${config.multifile.maxRequestSize}")
    private Long maxRequestSize;

    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        /**
         * 单个数据大小,
         * DataSize.ofMegabytes(maxFileSize)默认是配置字节,将字节转化为MB
         */
        factory.setMaxFileSize(DataSize.ofMegabytes(maxFileSize));
        // 总上传数据大小
        factory.setMaxRequestSize(DataSize.ofMegabytes(maxRequestSize));
        return factory.createMultipartConfig();
    }
}

그렇습니다. 업로드된 크기를 제어합니다. 언제든지 파일을!

위 내용은 SpringBoot의 제한된 업로드 파일 크기 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제