当前位置: 首页 > 知识库问答 >
问题:

多部分文件最大大小异常-spring boot embbeded tomcat

任文乐
2023-03-14

我已将最大文件大小设置为

multipart.maxFileSize: 1mb
multipart.maxRequestSize: 1mb

这是我的控制器:

@RequestMapping(method=RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ResponseStatus(HttpStatus.CREATED)
@Secured(Privileges.CAN_USER_READ)
public void create(@RequestParam("file")final MultipartFile file,Principal principal) throws IllegalStateException, IOException,MultipartException{

    medicalHistoryService.create(new MedicalHistory(file));
}

这是一条错误消息

2016-03-03 13:48:24.560  WARN 4992 --- [nio-8080-exec-1] h.c.w.RestResponseEntityExceptionHandler : Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (9288401) exceeds the configured maximum (1048576)

2016-03-03 13:48:25.545  WARN 4992 --- [nio-8080-exec-2] h.c.w.RestResponseEntityExceptionHandler : Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (9288401) exceeds the configured maximum (1048576)

请求过大文件后的最终结果是加载页面问题。我没有得到任何其他错误的堆栈跟踪,所以我有点卡住了什么是实际发生的。哦,是的,我已经尝试了许多其他的解决方案,如注册过滤器,在错误控制器中处理异常。每次我都会以同样的结果服务器崩溃告终。

编辑2

我的异常处理类:

@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler{

   // 413 MultipartException - file size too big 
@ExceptionHandler({MultipartException.class,FileSizeLimitExceededException.class,java.lang.IllegalStateException.class})
   public ResponseEntity<Object> handleSizeExceededException(final WebRequest request, final MultipartException ex) {
        //log.warn("413 Status Code. File size too large {}", ex.getMessage());
       log.warn(ex.getMessage());
       final ApiError apiError = message(HttpStatus.PAYLOAD_TOO_LARGE, ex);
       return handleExceptionInternal(ex, apiError, new HttpHeaders(), HttpStatus.PAYLOAD_TOO_LARGE, request);
   }
}

共有3个答案

郎曾笑
2023-03-14

请在应用程序中添加以下行。spring启动版本-2.0.1的属性。释放

spring.servlet.multipart.max-file-size=128MB
spring.servlet.multipart.max-request-size=128MB
spring.servlet.multipart.enabled=true

这解决了我的问题。

羊舌高爽
2023-03-14

这很棘手。Tomcat属性MaxSize导致了此问题。显然,它是在Tomcat的一个最新版本中引入的。其背后的整个想法是,如果Tomcat意识到请求将被拒绝,终止连接的速度将高于默认的2mb(至少这是我的解释)。简单地重写此属性可以解决问题。我意识到这不是完美的解决方案,但它比仅仅终止连接要好得多。

@Bean
public TomcatEmbeddedServletContainerFactory containerFactory() {
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
     factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
        @Override
        public void customize(Connector connector) {
         ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
        }
     });
     return factory;
}
朱华皓
2023-03-14

从Spring Boot 2开始

spring。servlet。多部分。最大文件大小=128KB
spring。servlet。多部分。最大请求大小=128KB

看文档

Spring靴1。十、

属性应该是:
spring.http.multipart.max-file-size=128KB
spring.http.multipart.max-estest-size=128KB

查看Spring靴指南

 类似资料:
  • 我正在用Spring Boot 2.1.3(使用标准的Tomcat嵌入式web服务器)开发一个endpoint来上载图像,我想限制多部分上载的大小。我可以通过以下属性轻松完成此操作: 但是我总是得到Spring无法捕获的500,因为Tomcat正在抛出异常并且请求无法到达我在RestController中的代码。 我的ExceptionHandler是这样的,但无论注释中出现什么异常,它显然都不起

  • 我的springboot版本是2.0.2,我在controller类中创建了全局异常,如下所示:

  • 您可以使用基于浏览器的上传(不是多部分上传)中的内容长度范围字段来限制文件大小:http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html 你怎么能在多部分上传中限制它?我正在使用EvaporateJS。

  • 我试图用postman上传一首歌,但我有一个错误,比如field song超过了其最大允许大小1048576字节。“ 我已经尝试在application.properties文件中添加这些配置,但它不起作用: spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB 这是我的

  • 问题内容: 我想知道java类的最大大小是多少。如代码属性结构中http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#1546所示,代码长度指定为4个字节,因此很多。我不明白的是,异常表的pc属性是2个字节。如果代码长度超过2个字节,但异常表只能寻址2个字节,怎么办? 问题答案: 第4.8.1节JVM规范的静态

  • 问题内容: 甲文件是一个相当有据可查的格式定义部分和大小,因此,最大尺寸为好。 例如,一个文件包含一个幻数(4个字节),一个版本(4个字节),常量池(可变大小)等。但是大小可以在几个级别上定义:您可以有65535个方法,每个方法都限于65535字节。 其他限制是什么? 而且,如果您要制作最大的文件,它将是多少? 如果需要,将答案限制为Java。这意味着如果Scala或Clojure(或…)更改了一