我使用Spring引導1.5.7。
我還沒有配置CommonsMultipartResolver,因爲Spring Boot已經處理文件上傳。Spring引導句柄SizeLimitExceededException
如果我的上傳超過了最大的permited大小,就會拋出一個醜陋的異常。
這是由我的控制器處理。
@ControllerAdvice
public abstract class DefaultController implements InitializingBean {
@ExceptionHandler(Exception.class)
public ResponseEntity<ServiceException> handleException(final Exception ex) {
...
} else if (ex instanceof MultipartException) {
MultipartException me = (MultipartException) ex;
Throwable cause = ex.getCause();
if (cause instanceof IllegalStateException) {
Throwable cause2 = cause.getCause();
if (cause2 instanceof SizeLimitExceededException) {
// this is tomcat specific
SizeLimitExceededException slee = (SizeLimitExceededException) cause2;
}
}
}
這種處理不僅複雜,而且可悲的是特定於Tomcat,因爲SizeLimitExceededException在包org.apache.tomcat.util.http.fileupload.FileUploadBase
。
我該如何處理錯誤案例,有人上傳了一個較大的文件,然後允許並返回一條好消息,而不管使用哪個Servlet引擎?
聽起來不錯,那麼SizeLimitExceededException提供的getPermittedSize和getActualSize有沒有機會在使用Tomcat的情況下獲取此值? – Nabor
@Nabor:我已經更新了答案以解決您的最新評論 – glytching
我將繼續使用當前的Tomcat特定解決方案,但答案很好。 – Nabor