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", но это имя, которое клиентское приложение, с которым должен работать мой код, использует при загрузке файла.

Другие вопросы по тегам