к примеру загружаю 2 файла, первый 1мб. второй 5мб.
В настройках спринга лимит на 3 мб. (spring.servlet.multipart.max-file-size=3MB)
Спринг автоматически перехватывает исключение MaxUploadSizeExceededException до того, как оно доходит до контролера (итог 500 ошибка).
При попытки поймать в @ControllerAdvice класса GlobalExceptionHandler - страница перезагружается и файлы не добавляются никакие.
А нужно чтобы 1 файл загрузился, 2 отклонил и уведомил.
Обработать именно на стороне бэка нужно.
Тоесть... если превышен лимит на загружаемый файл в настройках спринга и томката то тормозится полностью вся загрузка, а не только 1 файл.
Если увеличить лимит, то да можно обработать в сервисе как нужно.
Но вот потенциально всеравно какойто чудик будет файл 1гб грузить к примеру и в итоге та же ошибка.
Собственно вопрос, неужели это только на стороне клиента можно ограничить и на бэк ни как?
Как по мне, если файл не загрузился, то это уже не ок с точки зрения http-запроса. По-хорошему, надо бы в 2 запроса это делать.
Ты делаешь загрузку одним запросом? Если так, то у меня для тебя плохие новости - это ограничение не на каждый файл в запросе, а на размер всего запроса в целом. Вообще надо отдельными запросами загружать Я так понимаю у тебя jsp или какой то иной серверный рендеринг?
Мулитипартом... и лимит не на общую загрузку а именно на файл. Побродил по блогам, это старая проблемка... https://youtu.be/ZZMcg6LHC2k Решается костылем... даже стремно как то ( В этом случае тимлиф, но и по рест будет тоже самое. В запросе если хоть один файл превысит лимит, весь запрос отклонится, а не только тот что не проходит по валидации.
Помимо макс размера одного файла есть ещё макс размер тела запроса, spring.servlet.multipart.max-request-size кажется. Т.к. у тебя multipart, то несколько файлов могут передаваться в одном запросе, и здесь ты можешь нарваться на это ограничение.
Да это возможно, но в даном случае имено про размер 1 фала
Обсуждают сегодня