Skip to content

Commit 3f7b965

Browse files
committed
avniproject/avni-webapp#1133 | Show user-friendly error message when upload file size is exceeded
(cherry picked from commit 5f2ca33)
1 parent c2b364f commit 3f7b965

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

avni-server-api/src/main/java/org/avni/server/web/ErrorInterceptors.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package org.avni.server.web;
22

33
import com.fasterxml.jackson.databind.exc.InvalidFormatException;
4-
import org.avni.server.domain.ValidationException;
4+
import org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException;
55
import org.avni.server.domain.accessControl.AvniAccessException;
66
import org.avni.server.domain.accessControl.AvniNoUserSessionException;
77
import org.avni.server.framework.rest.RestControllerErrorResponse;
88
import org.avni.server.util.BadRequestError;
99
import org.avni.server.util.BugsnagReporter;
1010
import org.avni.server.web.util.ErrorBodyBuilder;
1111
import org.springframework.beans.factory.annotation.Autowired;
12+
import org.springframework.beans.factory.annotation.Value;
1213
import org.springframework.data.rest.webmvc.ResourceNotFoundException;
1314
import org.springframework.http.HttpHeaders;
1415
import org.springframework.http.HttpStatus;
@@ -18,6 +19,7 @@
1819
import org.springframework.web.bind.annotation.ExceptionHandler;
1920
import org.springframework.web.bind.annotation.RestControllerAdvice;
2021
import org.springframework.web.context.request.WebRequest;
22+
import org.springframework.web.multipart.MaxUploadSizeExceededException;
2123
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
2224

2325
import java.util.HashMap;
@@ -28,6 +30,8 @@
2830

2931
@RestControllerAdvice
3032
public class ErrorInterceptors extends ResponseEntityExceptionHandler {
33+
34+
private final String maxFileSize;
3135
private final BugsnagReporter bugsnagReporter;
3236
private final ErrorBodyBuilder errorBodyBuilder;
3337

@@ -58,7 +62,8 @@ public void setMessage(String message) {
5862
}
5963

6064
@Autowired
61-
public ErrorInterceptors(BugsnagReporter bugsnagReporter, ErrorBodyBuilder errorBodyBuilder) {
65+
public ErrorInterceptors(@Value("${spring.servlet.multipart.max-file-size}") String maxFileSize, BugsnagReporter bugsnagReporter, ErrorBodyBuilder errorBodyBuilder) {
66+
this.maxFileSize = maxFileSize;
6267
this.bugsnagReporter = bugsnagReporter;
6368
this.errorBodyBuilder = errorBodyBuilder;
6469
}
@@ -81,6 +86,11 @@ private ResponseEntity <RestControllerErrorResponse> error(final Exception excep
8186
return new ResponseEntity(new RestControllerErrorResponse(errorBodyBuilder.getErrorBody(message)), httpStatus);
8287
}
8388

89+
@ExceptionHandler(value = {MaxUploadSizeExceededException.class, SizeLimitExceededException.class})
90+
public ResponseEntity fileUploadSizeLimitExceededError(Exception e) {
91+
return ResponseEntity.badRequest().body(String.format("Maximum upload file size exceeded; ensure file size is less than %s.", maxFileSize));
92+
}
93+
8494
@ExceptionHandler(value = {Exception.class})
8595
public ResponseEntity unknownException(Exception e) {
8696
if (e instanceof BadRequestError) {

0 commit comments

Comments
 (0)