我有一个 Spring MVC 方法,它返回一个ResponseEntity
。根据检索到的具体数据,有时需要返回一个数据流给用户。有时它会返回流以外的其他内容,有时还会返回重定向。我绝对希望这是一个流而不是字节数组,因为它可能很大。
目前,我使用以下代码片段返回流:
HttpHeaders httpHeaders = createHttpHeaders();
IOUtils.copy(inputStream, httpServletResponse.getOutputStream());
return new ResponseEntity(httpHeaders, HttpStatus.OK);
不幸的是,这不允许 SpringHttpHeaders
数据实际填充响应中的 HTTP 标头。这是有道理的,因为我的代码写入OutputStream
在 Spring 收到之前ResponseEntity
.
如果能以某种方式返回一个,那就太好了ResponseEntity
与InputStream
让 Spring 处理它。它还将与我的函数的其他路径并行,我可以在其中成功返回ResponseEntity
。无论如何,我可以用 Spring 来完成这个任务吗?
另外,我确实尝试返回InputStream
in the ResponseEntity
只是为了看看 Spring 是否会接受它。
return new ResponseEntity(inputStream, httpHeaders, HttpStatus.OK);
但它抛出了这个异常:
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
我可以通过设置上的所有内容来使我的功能正常工作HttpServletResponse
直接,但我只想用Spring来做到这一点。