现在我有一个在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
,然后返回part3
后15秒。
然而,如果没有一些变化,这将无法工作,因为现在只有一个单一的return
声明。您认为最好的方法是什么?我已经看过一些Q& A关于"返回一个流"但是对Java和Spring Boot不熟悉我不确定"返回一个流对象"并且"实际响应是流式传输,即多个部分"
答案 0 :(得分:0)
答案其实很简单。只需在响应上直接获取PrintWriter,并在数据可用时使用它来编写和刷新数据。我不认为这会让我利用模板,但除此之外它还可以。
@RequestMapping(value = "/", method = RequestMethod.POST)
@SuppressWarnings("unchecked")
@ResponseBody
String processFile(@RequestParam("myinput") MultipartFile file, HttpServletResponse response) throws IOException {
PrintWriter printWriter = response.getWriter();
printWriter.println("a");
printWriter.flush();
TimeUnit.SECONDS.sleep(20);
printWriter.println("b");
printWriter.flush();
}