Получение списка объектов с файлами на Spring BootJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Получение списка объектов с файлами на Spring Boot

Сообщение Anonymous »

Раньше я задал вопрос, чтобы получить список пользовательских объектов в Spring Boot по запросам multipart/form-data. Теперь мне нужно внести некоторые изменения и для отправки файлов.
Раньше я отправлял поле списка в формате JSON, поэтому для решения этой задачи было достаточно специального конвертера. Но для файлов это не сработает. Итак, я нашел этот ответ о том, как обрабатывать POST массивов/списков объектов (они использовали NextJS в качестве бэкэнда), и я хотел бы сделать что-то подобное для Spring, но также не могу найти никаких ответов. Вот пример того, как должен выглядеть запрос:
Изображение

Или, если вам нужен пример JS:

Код: Выделить всё

function createFormData() {
const formDate = new FormData()

formDate.append('name', 'test')
formDate.append('logo', new File([''], 'test.png'))
formDate.append('link', 'test')

formDate.append('contacts[0][name]', 'test')
formDate.append('contacts[0][email]', 'test')
formDate.append('contacts[0][icon]', new File([''], 'test.png'))

formDate.append('contacts[1][name]', 'test')
formDate.append('contacts[1][email]', 'test')
formDate.append('contacts[1][icon]', new File([''], 'test.png'))

return formDate
}
При получении такого запроса Spring возвращает:

Код: Выделить всё

Invalid property 'contacts[0][email]' of bean class [com.example.trilha.dto.PartnerRequest]: Illegal attempt to get property 'contacts' threw exception
Как это реализовать?
Мой маршрут следующий:

Код: Выделить всё

@PostMapping(value = "createPartner", consumes = "multipart/form-data")
public ResponseEntity createPartner(
@ModelAttribute PartnerRequest partnerRequest
)
Для запроса используются следующие DTO:

Код: Выделить всё

record Contacts(
String name,
String email,
MultipartFile icon
) {}

public record PartnerRequest(
String name,
MultipartFile logo,
String link,
List contacts
){}
РЕДАКТИРОВАТЬ:
У меня сейчас нет внешнего интерфейса, я сначала создаю и тестирую API, прежде чем создавать интерфейс.
Изменение ModelAttribute на RequestParam не решает проблему, поскольку Spring попытается прочитать как JSON (поэтому не будет обрабатывать загрузку файла)
Изображение


Подробнее здесь: https://stackoverflow.com/questions/791 ... pring-boot
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»