У меня есть метод Spring MVC, который возвращает ResponseEntity
. В зависимости от конкретных полученных данных иногда требуется вернуть поток данных пользователю. В других случаях он возвращает что-то другое, кроме потока, а иногда и перенаправление. Я определенно хочу, чтобы это был поток, а не байтовый массив, поскольку он может быть большим.
В настоящее время я возвращаю поток, используя следующий фрагмент кода:
HttpHeaders httpHeaders = createHttpHeaders();
IOUtils.copy(inputStream, httpServletResponse.getOutputStream());
return new ResponseEntity(httpHeaders, HttpStatus.OK);
К сожалению, это не позволяет данным Spring HttpHeaders
фактически заполнять HTTP-заголовки в ответе. Это имеет смысл, так как мой код записывается в OutputStream
, прежде чем Spring получает ResponseEntity
.
Было бы очень приятно каким-то образом вернуть ResponseEntity
с InputStream
, а пусть Spring обработать его. Он также будет параллелен другим путям моей функции, где я могу успешно вернуть ResponseEntity
. В любом случае я могу выполнить это с помощью Spring?
Кроме того, я попытался вернуть InputStream
в ResponseEntity
, чтобы увидеть, примет ли он Spring.
return new ResponseEntity(inputStream, httpHeaders, HttpStatus.OK);
Но это исключает это исключение:
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
Я могу заставить свою функцию работать, установив все на HttpServletResponse
напрямую, но я хотел бы сделать это только с помощью Spring.