我使用Spring Boot v1.2.5創建REST應用程序。在上傳圖片時,我檢查了最大文件大小,它提供了以下屬性:如何處理最大文件大小Spring Boot中的異常?
multipart.maxFileSize= 128KB
in application.properties。該工具由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;
}
}
我使用揚鞭開發/記錄REST的API。這是上傳超過大小的文件時的響應。 謝謝。
我試過這樣做。我嘗試使用ExceptionHandler在我的控制器中本地處理異常,而不是使用ControllerAdvice的全局包裝器,如您共享的文檔中所述。我試圖在方法中處理MultipartException。它似乎沒有工作。 @luboskrnac請檢查更新1. –
我錯了,之前糾正了我的答案。你想使用ErrorController。 – luboskrnac
感謝您指出。我用我使用的最終解決方案更新了我的文章。 –