angular2下载对象使用来自s3的预先签名的URL

时间:2017-03-24 20:58:41

标签: angular amazon-web-services amazon-s3 httprequest

我正在使用AWS SDK从S3生成预先签名的下载URL,而且我已经完成了该部分。我可以将生成的预签名网址复制到浏览器中,Chrome会自动下载该文件。

我想在Angular2中实现相同的功能,基本上模拟点击该链接。所以我写了下面的代码:

app.component.ts

public downloadFile() { 
  this.downloadService.downloadFile(this.downloadLink)
    .subscribe((response) => {
      console.log(response);
    });}

download.service.ts

    public downloadFile(downloadLink: string) {
      return this.http.get(downloadLink)
        .map((response) => {
            return response;
      });
    }

它确实在控制台中打印出文件内容,但没有触发下载。有没有人知道这样做的正确方法是什么?

谢谢,

1 个答案:

答案 0 :(得分:0)

以下是下载CSV文件的示例,更改您自己文件的mime类型。

public downloadFile(downloadLink: string) {
      return this.http.get(downloadLink)
        .map((response) => {
           let blob = new Blob([response], { type: 'text/csv' });
           let url= window.URL.createObjectURL(blob);
           window.open(url);
      });
    }