Как обработать исключение максимального размера файла в Spring Boot?
Я использую Spring Boot v1.2.5 для создания приложения REST. При загрузке изображений у меня есть проверка на максимальный размер файла, который предоставляется свойством:
multipart.maxFileSize= 128KB
в приложении. свойства. Эта возможность предоставляется самой Spring Boot. Теперь проверка работает правильно. Вопрос в том, как мне обработать исключение и вернуть пользователю сообщение, которое он может понять?
Обновление 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;
}
Обновление 2 ----------
После того, как @luboskrnac указал на это, мне удалось найти решение. Мы можем использоватьResponseEntityExceptionHandler
здесь, чтобы справиться с этим конкретным случаем. Я полагаю, мы могли бы также использоватьDefaultHandlerExceptionResolver
, ноResponseEntityExceptionHandler
позволит нам вернутьResponseEntity
в отличие от первого, методы которого вернутсяModelAndView
, янет попробовал все же.
Это последний код, который я использую для обработки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. Это ответ при загрузке файла, который превышает размер.Благодарю.