如何在转换文件并在同一请求中发送时通过 HTTP 报告进度?

问题描述 投票:0回答:0

使用 Angular 和 Spring:我有一个 POST 端点,它从其他几个文件创建一个 zip 文件,然后将这个 zip 文件发送回客户端。 zip 文件可能非常大,在极少数情况下可达 20GB。 默认情况下,只有在 zip 文件转换完成并且文件下载正在运行后,用户才能看到进度。 由于转换可能需要几分钟时间,我决定向前端/用户提供进度更新。现在这些进度更新是使用 Websockets/STOMP 实现的。

我会说这种方法没问题,但缺点是我必须管理两个连接才能正确更新前端的 UI(例如,当 HTTP 请求失败或 websocket 超时时失败)。

我已经阅读了有关服务器发送事件的信息,并认为它们也可能用于此目的,但我在网上找不到太多关于我的确切用例(有进度的转换+之后的文件下载)的信息。

有没有办法在同一个请求中提供进度报告+文件下载?

angular spring http websocket server-sent-events
© www.soinside.com 2019 - 2024. All rights reserved.