azure 使用REST API和浏览器的下载管理器下载大型文件

8ljdwjyq  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(163)

我们在Angular前端应用程序中遇到了一个小问题-我们的客户端希望下载报告。一旦生成报告,我们就使用GET端点,该端点具有关键的头,如access-control-expose-headers: content-dispositioncontent-disposition: attachment; filename=TasksReport-28-10-2022.xlsx; filename*=UTF-8''Report.xlsx。该部分工作正常,文件正在下载。当文件较大时,问题开始出现(~ 150 MB),我们必须等待响应。我使用忙碌指示器,但客户端希望有下载像“常规文件”-所以希望看到在浏览器的下载管理器的全部进展。
因此,现在我们有了“长”请求,在此之后,文件将立即保存在HDD上:

但我们希望实现类似于直接按文件下载链接的功能:

我们想直接提供文件的URI,但我不认为这是最好的方法,对吗?我们如何设置API或UI来实现这一点?感谢您的帮助,如果需要更多信息,我很乐意编辑问题并提供它。

zkure5ic

zkure5ic1#

Google Drive对着下面道:
1.您的文件将被打包。

  1. Google会发送一个带有打包文件名的响应(例如:网站首页
    1.客户端(浏览器应用程序)调用链接,浏览器开始下载。如下所示:
downloadURI(uri: string, name: string) {
    var link = document.createElement('a');
    link.download = 'name';
    link.href = uri;
    link.setAttribute('target', '_blank');
    link.click();
    link.remove();
  }

第二种方法:可以在get请求中使用reportProgress选项

this.httpClient.get<any>(environment.backendUrl + '/your-path', {
        observe: 'events',
        reportProgress: true,
      })
...

因此,您可以建立一个下载进度窗口等。
你好弗洛里安

相关问题