Я использую Spring Boot v1.2.5 для создания приложения REST. При загрузке изображений у меня есть проверка на максимальный размер файла, которому предоставляется свойство:Как обрабатывать максимальный размер файла Исключение в Spring Boot?
multipart.maxFileSize= 128KB
in application.properties. Это средство предоставляется самой Spring Boot. Теперь проверка работает правильно. Вопрос в том, как мне обрабатывать исключение и возвращать пользователю сообщение, которое он может понять?
Update 1 ----------
Я написал метод в моем контроллере, где я намерен обращаться с MultipartException, используя @ExceptionHandler
. Кажется, это не работает.
Это мой код:
@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
public ApplicationErrorDto handleMultipartException(MultipartException exception){
ApplicationErrorDto applicationErrorDto = new ApplicationErrorDto();
applicationErrorDto.setMessage("File size exceeded");
LOGGER.error("File size exceeded",exception);
return applicationErrorDto;
}
Update 2 ----------
После @luboskrnac указал на это, мне удалось придумать решение. Мы можем использовать здесь ResponseEntityExceptionHandler
, чтобы справиться с этим конкретным случаем. Я считаю, что мы могли бы также использовать DefaultHandlerExceptionResolver
, но ResponseEntityExceptionHandler
позволит нам вернуть ResponseEntity
, в отличие от первого, методы которого возвратят ModelAndView
. I не сделали попробовал.
Это последний код, который я использую для обработки MultipartException
:
@ControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
private static final Logger LOGGER = Logger.getLogger(CustomResponseEntityExceptionHandler.class);
@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
@ResponseBody
public ApplicationErrorDto handleMultipartException(MultipartException exception){
ApplicationErrorDto applicationErrorDto = new ApplicationErrorDto();
applicationErrorDto.setMessage("File size exceeded");
LOGGER.error("File size exceeded",exception);
return applicationErrorDto;
}
}
Я использую Swagger для разработки/документирования REST Apis. Это ответ при загрузке файла, который превышает размер. Спасибо.
Я пробовал это сделать. Я попытался обработать исключение локально внутри моего контроллера, используя ExceptionHandler, а не глобальную оболочку с помощью ControllerAdvice, как указано в документах, которыми вы делились. Я пытаюсь обрабатывать MultipartException в методе. Кажется, это не работает. @luboskrnac Пожалуйста, проверьте обновление 1. –
Я ошибся, прежде чем исправил свой ответ. Вы хотите использовать ErrorController. – luboskrnac
Спасибо, что указали это. Я обновил свой пост окончательным решением, которое я использую. –