Spring Boot, Jetty: Multipart upload - заставить Spring/Jetty принимать части тела с отсутствующим атрибутом "filename"?
Как заставить Spring (или Jetty) принимать / анализировать Multipart-загрузки, если части тела не имеют filename
атрибут в Content-Disposition?
Иначе чем пропавший filename
В атрибуте Multipart сообщение в порядке, и оно также используется для работы со старой версией Jetty/Spring.
Что мне нужно установить, чтобы Jetty / Spring снова стала более устойчивой к ошибкам?
PS Здесь я нашел похожую, но другую проблему (name
атрибут отсутствует). Тем не менее, в то время как name
кажется важным атрибутом для идентификации частей тела, вам не обязательно нужно исходное имя файла на стороне клиента: Spring POST multipart / form-data Запросить пустое тело, getParts всегда пусто
1 ответ
Как уже упоминалось в комментарии:
Spring (4.3.8.RELEASE) безоговорочно пропускает многокомпонентные файлы без имени файла, то есть нет настроек, чтобы сделать его более устойчивым к ошибкам. Таким образом, единственным решением было переопределить Spring StandardMultipartHttpServletRequest
Класс и модифицировать метод: parseRequest
,
Добавленные строки кода:
if (filename == null && "file".equalsIgnoreCase(part.getName()) && MediaType.APPLICATION_OCTET_STREAM.equalsIgnoreCase(part.getContentType())) {
filename = DEFAULT_FILENAME;
}
И да, имя составной части тела не обязательно должно быть "file", но это имя, которое клиентское приложение, с которым должен работать мой код, использует при загрузке файла.