我开发了一个Spring rest API,它在请求中获取Multipart文件,然后将它们上传到AWS S3位置。这个过程需要时间,客户必须等待整个过程完成。
我不希望客户端等待上传过程完成,但我确实希望在响应中发送图片网址。
我可以只在响应中发送图片网址并打开另一个帖子,将图片上传到S3吗?
答案 0 :(得分:0)
你可以通过使用Servlet 3.0异步功能的Springs'DeferredResult来实现它。
您的控制器看起来如下所示(最初由here发布Tomasz )
@RequestMapping("/upload")
@ResponseBody
public DeferredResult<String> upload() {
final DeferredResult<String> deferredResult = new DeferredResult<>();
runInOtherThread(deferredResult);
return deferredResult;
}
private void runInOtherThread(DeferredResult<String> deferredResult) {
// Call AWS S3 for upload and collect response
deferredResult.setResult("File uploaded");
}
请参阅教程以获取完整的工作示例。