我正在用Spring Boot 2.1.3(使用标准的Tomcat嵌入式web服务器)开发一个endpoint来上载图像,我想限制多部分上载的大小。我可以通过以下属性轻松完成此操作:
spring:
servlet:
multipart:
max-file-size: 2MB
max-request-size: 2MB
但是我总是得到Spring无法捕获的500,因为Tomcat正在抛出异常并且请求无法到达我在RestController中的代码。
2019-03-02 10:12:50.544 ERROR [] [ o.a.c.c.C.[.[.[/].[dispatcherServlet]] [] Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (3917946) exceeds the configured maximum (2097152)] with root cause
org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (3917946) exceeds the configured maximum (2097152)
我的ExceptionHandler是这样的,但无论注释中出现什么异常,它显然都不起作用:
@ExceptionHandler(MaxUploadSizeExceededException.class)
public ResponseEntity handleMaxSizeException(Exception e) {
logger.warn(e.getMessage());
...
return status(HttpStatus.PAYLOAD_TOO_LARGE).body(...);
}
我已经尝试了已经提到的属性,但没有任何效果:
@Bean
public TomcatServletWebServerFactory containerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers((TomcatConnectorCustomizer) connector ->
((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1));
return factory;
}
我已经检查了以下问题(和其他问题...)的答案,但它们大多已经过时或根本不起作用:
有人在为此挣扎吗?
Tomcat一直抱怨请求超过了配置的最大值(2097152),尽管我在全局web.xml中设置了默认设置:
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
最终解决了:我正在开发的servlet类扩展了一个具有@MultipartConfig注释的servlet类,但我的本地类没有@MultipartConfig注释。因此,请求没有被视为多部分,这导致了这个错误。
引发错误的代码位于这些行的超类中:
//Search through the parts for an uploaded file
for (Part part : request.getParts()) {
请将其添加到您的application.properties
中:
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB
您可以在上述配置中根据需要更改大小
有点晚了。您需要设置application.properties或application.ymlserver.tomcat.max-swal-size=-1
有了它,tomcat将不会干扰上传请求,并且操作将在Spring之前完全处理,您的异常控制器将完美工作。参考
我已将最大文件大小设置为 这是我的控制器: 这是一条错误消息 请求过大文件后的最终结果是加载页面问题。我没有得到任何其他错误的堆栈跟踪,所以我有点卡住了什么是实际发生的。哦,是的,我已经尝试了许多其他的解决方案,如注册过滤器,在错误控制器中处理异常。每次我都会以同样的结果服务器崩溃告终。 编辑2 我的异常处理类:
您可以使用基于浏览器的上传(不是多部分上传)中的内容长度范围字段来限制文件大小:http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html 你怎么能在多部分上传中限制它?我正在使用EvaporateJS。
我有一个endpoint,它将图像文件上传到服务器,然后上传到S3。 当我在本地主机上运行时,MultipartFile字节大小正确,并且上传成功。 然而,当我将它部署到EC2实例时,上传的文件大小不正确。 控制器代码 在 方法中,打印 file.size 会导致大小错误。 实际文件大小是649305字节,但是当上传到我的prod服务器时,它读取为1189763字节。 我的生产服务器是一个AWS
我的springboot版本是2.0.2,我在controller类中创建了全局异常,如下所示:
PHP不遵守上载\u最大\u文件大小 详细信息:使用 和. conf中搜索grep-inrupload_max_filesize,只返回12M值。搜索 /etc/httpd/conf/ /etc/httpd/conf.d/显然是虚拟主机的根。在grep返回0结果的虚拟主机中没有特殊设置。
问题内容: 我有一个无法访问的PC上托管的网站。我有一个上传表单,允许人们上传最大30MB的mp3文件。我的服务器端脚本是用PHP完成的。 每次尝试上传文件时,都会收到一条错误消息,声称文件超出了允许的最大大小,因此我需要增加大小。我在网络上的研究建议更改我无权访问的文件,这样将无法正常工作。其他人建议我将自定义文件添加到我的根目录中,该文件无效。还有其他建议吗? 问题答案: 您需要设置的值,并在