Объединение загрузки файла и тела запроса на одной конечной точке в контроллере остатка - PullRequest
2 голосов
/ 26 марта 2019

Пользовательский интерфейс моего веб-приложения имеет возможность либо загрузить файл (CSV), либо отправить данные в виде json в теле запроса.Однако в запросе будет присутствовать либо загрузка файла, либо запрос json, а не оба.Я создаю контроллер покоя пружины, который объединяет загрузку файлов, а также принимает значения json запроса.

С нижеприведенной конечной точкой, проверенной почтальоном, я не получаю исключения:

org.apache.tomcat.util.http.fileupload.FileUploadException: запрос был отклонен, поскольку не было найдено многокомпонентной границы

@RestController
public class MovieController {

private static final Logger LOGGER = LoggerFactory.getLogger(MovieController.class);

@PostMapping(value="/movies", consumes = {"multipart/form-data", "application/json"})
public void postMovies( @RequestPart String movieJson, @RequestPart(value = "moviesFile") MultipartFile movieFile ) {

    // One of the below value should be present and other be null
    LOGGER.info("Movies Json Body {}", movieJson);
    LOGGER.info("Movies File Upload {}", movieFile);
}

}

Благодарим за любую помощь в получении этой проблемырешена?

Примечание. Мне удалось создать две отдельные конечные точки для загрузки файла и запроса json, но этого недостаточно.Поэтому я ищу решение объединить оба

1 Ответ

0 голосов
/ 26 марта 2019

Попробуйте что-то вроде:

@RequestMapping(value = "/movies", method = RequestMethod.POST, consumes = { "multipart/form-data", "application/json" })
public void postMovies(
        @RequestParam(value = "moviesFile", required = false) MultipartFile file, 
  UploadRequestBody request) {

В RequestBody вы можете добавить параметры, которые вы хотите отправить.
Это не отправит данные в формате JSON.
Изменить: - Я забыл добавить переменную для файла Multipart, и я по ошибке использовал RequestBody, который является зарезервированным ключевым словом весной. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...