Grails4 - ограничение на максимальный размер файла при превышении при загрузке файла
Я хотел бы поймать это исключение, а не просто вернуть 500 конечным пользователям, что является плохим опытом, по крайней мере, в моем приложении. Намерение будет заключаться в том, чтобы вернуть пользователя обратно на страницу формы с некоторой обратной связью для повторной попытки.
В настоящее время пользователь отбрасывает 500 обратно, а в журналах печатается следующее;
Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (157552) exceeds the configured maximum (1024)
1 ответ
Кредитование @james-kleeh для этого быстрого старта;
Но я мог заставить это работать на Grails 4.0.0.M2 только когда я расширяю StandardServletMultipartResolver
реализация, которая используется по умолчанию. Затем пределы maxFileSize продолжают разрешаться из config (yaml).
public class MyMultipartResolver extends StandardServletMultipartResolver {
static final String FILE_SIZE_EXCEEDED_ERROR = "fileSizeExceeded"
public MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) {
try {
return super.resolveMultipart(request)
} catch (MaxUploadSizeExceededException e) {
request.setAttribute(FILE_SIZE_EXCEEDED_ERROR, true)
return new DefaultMultipartHttpServletRequest(request, new LinkedMultiValueMap<String, MultipartFile>(), new LinkedHashMap<String, String[]>(), new LinkedHashMap<String, String>());
}
}
}
Со следующим в ресурсах. Groovy;
// catch exception when max file size is exceeded
multipartResolver(MyMultipartResolver)
Затем вам необходимо проверить атрибут FILE_SIZE_EXCEEDED_ERROR в контроллере и обработать его соответствующим образом.