【问题标题】:Angular 2 Download File from URLAngular 2 从 URL 下载文件
【发布时间】:2017-12-10 02:34:15
【问题描述】:

您好,我已将 Angular/Ionic 2+ 应用程序连接到 Amazon S3。在我的应用程序中,当我想下载文件时,我的后端会提供一个从我的 S3 生成的唯一预签名 URL。看起来像这样:

https://s3.ap-southeast-2.amazonaws.com/test%2F1/435345345-4545-4aa8-8a8a-etertertttrt-4addd157-ac38-41fd-5454-8ffa709ee77fcsdfsdfa...

我的问题是,一旦我有了 url,如何通过我的组件以编程方式下载文件?到目前为止,我已经尝试过,但没有运气:

window.open(url, '_blank');

getFile(url: string): void {
    this.http.get(url)
    .map((res) => {
        return new Blob([res.blob()], { type: 'image/jpeg' })
    })
    .subscribe(res => {
      saveAs(res,'test.jpg');
      let fileURL = URL.createObjectURL(res);
      window.open(fileURL);
    }, error => {
        console.log(error);
    });
    console.log('Get File http');
  }

使用上面的代码,我得到一个错误:请求正文既不是 blob 也不是数组缓冲区。

感谢您对此的任何帮助..

【问题讨论】:

  • 我认为上面应该可以,只需检查您是否允许弹出窗口
  • 我收到一个错误请求正文既不是 blob 也不是数组缓冲区。虽然我知道如果我手动打开链接文件下载没有问题。
  • 只需让您的后端将文件作为附件发送,这样您就不必在 Javascript 中手动下载它

标签: javascript angular ionic2


【解决方案1】:

看看File Transfer Plugin

这用于在 Ionic 2 应用程序中下载文件。请注意,目前最新版本的插件 (1.7.0) 中存在一个错误,该错误发生在您构建应用程序时。我目前使用的是 1.6.3 版本。所以使用以下命令安装插件:

Ionic cordova plugin add cordova-plugin-file-transfer@1.6.3

【讨论】:

  • 不幸的是文件传输插件不支持渐进式网络应用程序。
  • 是什么让你说文件传输插件不支持这个?插件支持“浏览器”平台..
  • 在普通桌面 chrome 或 safari 浏览器中不会打开文件,但在 android web 或 ios mobile 中会打开文件。
猜你喜欢
  • 1970-01-01
  • 2018-05-10
  • 2018-05-26
  • 2018-03-06
  • 2018-05-30
  • 1970-01-01
  • 2017-11-10
  • 2018-02-09
  • 2018-08-16
相关资源
最近更新 更多