javascript - Angular 2 - 文件下载 - 没有任何后端帮助 - 可能吗?

标签 javascript angular typescript filesaver.js

我正在玩 Angular 2,试图创建示例应用程序来展示我自己,我已经完成了几乎所有的事情。最后,我正在尝试实现下载选项。为此,我挖掘了 SO 并得到了 this

根据该示例,我尝试复制它,但后来知道 HTTP_PROVIDERS 已被弃用。有人能告诉我目前可用的等效模块是什么吗?并指导我开始。

请分享任何工作的 plunker 以供引用

到目前为止我有以下内容

import { Http, ResponseContentType } from '@angular/http';
export class AboutComponent implements OnInit {

  //constructor() { }
  constructor(private dataService: dataService,private http: Http){}
  about=[];
  private filePath = './coreMachineDetails/machine109902.docx' // docx in my local folder      
   ngOnInit(){
    //some codes
  }

  getFile(){
    return this.http.get(this.filePath,{
      responseType: ResponseContentType.Blob,     
    }).map(res =>{
          return {
        filename: 'machine109902.docx',
        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.')
      });
  }
}

在 View 中

<button class="btn waves-effect waves-light btn-primary custom-btn" (click)="getFile()"><i class="fa fa-file-pdf-o"></i> Download manuals</button>

最佳答案

由于您引用的是本地文件。它已被框架阻止。查看更多 https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

关于javascript - Angular 2 - 文件下载 - 没有任何后端帮助 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935923/

相关文章:

javascript - JavaScript 对象和原始类型有什么区别?

javascript - Angular js 在每次 onkeyup 操作后检查输入框以查看它是否满足条件?

javascript - Angular CLI 生产构建时出错

angular - Angular 单元测试中 Testbed.inject(serviceName) 和 fixture.debugElement.injector.get(serviceName) 的区别

angular - 如何在 Angular 8 的 Web Worker 中导入 typescript 模块?

typescript - TypeScript 中带有任意数量参数的函数,后跟回调

javascript - 仅从 SubmitDate 获取日期

angular - 将Angular 5更新为Angular 6错误

typescript - 为什么我可以对 `false` 等文字使用类型断言?

javascript - 使用php自动打印