【发布时间】:2018-03-23 15:52:22
【问题描述】:
现在我有一个在 SpringBoot 中可以正常工作的方法。它接收一个 POST 参数,对其进行一些处理,并返回一个字符串结果(不使用模板)。
顺便说一句,我不确定我是否正确设置了方法签名,但正如我所说的那样:
@RequestMapping(value = "/", method = RequestMethod.POST)
@SuppressWarnings("unchecked")
@ResponseBody
String processFile(@RequestParam("myinput") MultipartFile file, HttpServletResponse response) throws IOException {
// do some processing
String myresponse = 'yadayada';
return myresponse;
}
我将开始处理更大的文件,因此我想将字符串 myresponse 分成几部分返回。所以对于字符串part1 part2 part3,我可能会立即将part1返回给客户端,然后在10秒后返回part2,然后在15秒后返回part3。
但是,如果不进行一些更改,这将无法正常工作,因为现在只有一个单一的整体 return 语句。您认为最好的方法是什么?我看过一些关于“返回流”的问答,但对 Java 和 Spring Boot 不熟悉我不确定“返回流对象”和“让实际响应流式传输,即分多个部分”之间是否有区别
【问题讨论】:
-
我会使用 websocket,上传文件时在您的客户端打开它,并在您决定时从控制器向套接字发送通知。还将插座与弹簧靴集成在一起,非常快速和容易
-
我不确定 websocket 能带给我什么。我本身并不需要通知,我只需要“流式传输”的响应
-
我阅读了一个使用 Java 8 Streams (stackoverflow.com/questions/37155557/…) 的解决方案,但不幸的是我需要为这个项目使用 Java 7。
-
我将支持使用WebSockets 的意见。这似乎是您尝试做的完美解决方案。
标签: java spring spring-mvc spring-boot