Angular js中的文件下载

Posted

技术标签:

【中文标题】Angular js中的文件下载【英文标题】:File download in angular js 【发布时间】:2019-05-20 14:33:57 【问题描述】:

如何在移动设备中下载文件,同时从服务器提供 URL,在 Angularjs 移动应用程序(Platform Cordova)中。文件可以是pdf、图片等类型...

【问题讨论】:

您是否能够在您的应用中清理并生成有效的 URL? 是的。我从 Web API 获取 URL,我已经在浏览器上检查了它及其工作 当您将手指按住链接(在移动设备上)时...您看到了什么?您是否(来自操作系统)要求您在另一个应用程序中打开它? 没有。当我点击链接时没有任何反应。即使 '' 用于重定向,设备中也没有发生任何事情,但在浏览器中,它会转到链接页面 将此添加到您的页面... 【参考方案1】:

你必须这样做:

这是 Angular JS 部分:

import  Http, ResponseContentType  from '@angular/http';
...

constructor(
  private http: Http,
)  

downloadFile() 
  return this.http
    .get('http://www.africau.edu/images/default', 
      responseType: ResponseContentType.Blob,
      search: // query string if have
    )
    .map(res => 
      return 
        filename: 'sample.pdf',
        data: res.blob()
      ;
    )
    .subscribe(res => 
        console.log('start download:',res);
        var url = window.URL.createObjectURL(res.data);
        var a = document.createElement('a');
        document.body.appendChild(a);
        a.setAttribute('style', 'display: none');
        a.href = url;
        a.download = res.filename;
        a.click();
        window.URL.revokeObjectURL(url);
        a.remove(); // remove the element
      , error => 
        console.log('download error:', JSON.stringify(error));
      , () => 
        console.log('Completed file download.')
      );

这是 html 部分:

<button class="btn btn-primary" (click)="downloadFile()"><i class="fa fa-file-pdf-o"></i> Download</button>

【讨论】:

以上是关于Angular js中的文件下载的主要内容,如果未能解决你的问题,请参考以下文章

将主题中的 CSS 和 JS 文件合并到 Angular8 项目中的完美正确方法是啥

angular7中引入外部js文件

Angular js中的文件下载

从 Angular js 中的 web api 下载 csv 文件

必需属性不适用于Angular Js中的文件输入

Angular js/MVC 中的文件拖放功能不起作用