我的应用程序使用 Google Cloud Storage 存储大文件并使用 Spring Boot 作为后端。
我刚刚完成了负责下载的控制器的实现,按照我认为可能是正确的,但是我从浏览器得到的行为不是我所期望的。
步骤
如果我尝试下载文件,将发生以下情况:
使用 ReadChannel 从谷歌云存储中读取文件(“blob”)
通道写入 ByteArrayOutputStream;
通道使用缓冲区写入
ByteArrayOutputStream 在 InputStreamResource 中转换
然后在 ResponseEntity 中传递 inputStream 资源
意外的行为
如果用户去下载的控制器,并要求一个特定的文件,该文件首先完全加载到服务器上,然后提供给客户端。同时,客户端看到服务器“没有响应”(因为服务器正在加载文件),这不好。当文件完全加载到服务器上时,会很快出现在“已下载”中。
我想要的是避免“无响应”部分,并将文件流式传输到客户端,就像您尝试下载大文件时通常发生的那样,您会在 Chrome 中看到文件周围的“下载”轮.
任何帮助理解以下代码有什么问题将不胜感激!
红颜莎娜
相关分类