gpt4 book ai didi

java - 如何处理 MaxUploadSizeExceededException

转载 作者:IT老高 更新时间:2023-10-28 13:45:58 26 4
gpt4 key购买 nike

MaxUploadSizeExceededException 当我上传的文件大小超过允许的最大值时出现异常。我想在出现此异常时显示错误消息(如验证错误消息)。在 Spring 3 中如何处理此异常以执行此类操作?

谢谢。

最佳答案

这是一个老问题,所以我将其添加给正在努力使用 Spring Boot 2 来解决这个问题的 future 人(包括 future 的我)。

首先你需要配置spring应用(在属性文件中):

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

如果您使用的是嵌入式 Tomcat(很可能是,因为它是标准配置),配置 Tomcat 以不取消大主体的请求也很重要

server.tomcat.max-swallow-size=-1

或至少将其设置为相对较大的尺寸

server.tomcat.max-swallow-size=100MB

如果您不为 Tomcat 设置 maxSwallowSize,您可能会浪费大量时间来调试为什么会处理错误但浏览器没有响应 - 这是因为如果没有此配置,Tomcat 将取消请求,即使您会在记录该应用程序正在处理错误,浏览器已经收到来自 Tomcat 的取消请求并且不再监听响应。

要处理 MaxUploadSizeExceededException,您可以添加 ControllerAdviceExceptionHandler

这是 Kotlin 中的一个简单示例,它简单地设置一个带有错误的 flash 属性并重定向到某个页面:

@ControllerAdvice
class FileSizeExceptionAdvice {
@ExceptionHandler(MaxUploadSizeExceededException::class)
fun handleFileSizeException(
e: MaxUploadSizeExceededException,
redirectAttributes: RedirectAttributes
): String {
redirectAttributes.addFlashAttribute("error", "File is too big")
return "redirect:/"
}
}

注意:如果您想直接在 Controller 类中使用 ExceptionHandler 处理 MaxUploadSizeExceededException,您应该配置以下属性:

spring.servlet.multipart.resolve-lazily=true

否则会在请求映射到 Controller 之前触发异常。

关于java - 如何处理 MaxUploadSizeExceededException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com