首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在angular2中使用Filesaver js

在angular2中使用Filesaver js
EN

Stack Overflow用户
提问于 2016-11-24 17:23:00
回答 3查看 28K关注 0票数 8

我已经检查了所有我能找到的关于Filesaver JS与angular的使用的帖子,但我仍然不能理解soution。我将此添加到我的system.config.js的地图部分

代码语言:javascript
复制
 'filesaver': 'node_modules/filesaver/src/Filesaver.js'

我将此代码添加到system.config.js的packages部分

代码语言:javascript
复制
  'filesaver': {defaultExtension: 'js'}

然后我以这种方式将其导入到我的service.ts中

代码语言:javascript
复制
import { saveAs } from 'filesaver';

然而我得到了这个错误。

有人能帮帮忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-25 15:48:22

请尝试以下操作

代码语言:javascript
复制
npm install file-saver --save

然后向您的项目添加一个声明文件,如'declarations.d.ts‘,并在其中放入

代码语言:javascript
复制
declare module 'file-saver';

在systemjs.config.js中,将以下内容添加到地图部分

代码语言:javascript
复制
'file-saver': 'npm:file-saver/FileSaver.js'

然后将库导入到您的组件或服务中,如下所示

代码语言:javascript
复制
import { Component } from '@angular/core';
import * as saveAs from 'file-saver';


@Component({
  selector: 'my-app',
  template: `<h1>Hello {{name}}</h1>
  <button (click)="SaveDemo()">Save File</button>`,
})
export class AppComponent {
  name = 'Angular';

  SaveDemo() {
    let file = new Blob(['hello world'], { type: 'text/csv;charset=utf-8' });
    saveAs(file, 'helloworld.csv')
  }
} 

希望能有所帮助。

票数 13
EN

Stack Overflow用户

发布于 2017-06-04 17:29:44

带http的angular-cli的(后跟httpClient):

代码语言:javascript
复制
npm install file-saver --save

将此第三方库添加到.angular-cli.json

代码语言:javascript
复制
"scripts": [
      "../node_modules/file-saver/FileSaver.js"
    ],

在blabla服务中:

代码语言:javascript
复制
downloadBlaBlasCSV() {
        let options = {responseType: ResponseContentType.ArrayBuffer };
        return this.http.get(this.config.apiUrl + '/blablasCSV', options)
        .catch((err: Response) => Observable.throw(err.json()));
    }

最后,对组件进行int:

代码语言:javascript
复制
import { saveAs } from 'file-saver';

downloadBlaBlasCSV() {
    this.blablaService.downloadBlaBlasCSV().subscribe(
      (data) => { this.openFileForDownload(data); },
      (error: any) => {
        ...
      });
  }

openFileForDownload(data: Response) {
    //var blob = new Blob([data._body], { type: 'text/csv;charset=utf-8' });
    //saveAs(blob, 'Some.csv');
    let content_type = data.headers.get('Content-type');
    let x_filename = data.headers.get('x-filename');
    saveAs(data.blob(), x_filename);
  }

httpClient

它与http相同,但服务方法不同:

代码语言:javascript
复制
downloadBlaBlasCSV() {
        return this.httpClient.get(this.config.apiUrl + '/blablasCSV',  {
            headers: new HttpHeaders().set('Accept', 'text/csv' ),
            observe: 'response',
            responseType: 'blob'
        })
    }
票数 13
EN

Stack Overflow用户

发布于 2018-07-30 15:32:51

我使用angular 6(我的项目中没有可用的systemjs.config.js文件)+ FileSaver。我需要从服务器下载PDF。以下是有效的方法:

代码语言:javascript
复制
npm install file-saver --save

package.json:

代码语言:javascript
复制
"file-saver": "^1.3.8"

代码:

代码语言:javascript
复制
import { saveAs } from 'file-saver';
...
this.http
      .get<any>("/pdfs/mypdf.pdf", { responseType: 'blob' as 'json' })
      .pipe(
        tap(deployments => this.log(`fetched resoure`)),
        catchError(this.handleError('getResource', []))
      )
      .subscribe(data => {
        console.log(data);
        saveAs(new Blob([data], { type: 'pdf' }), 'data.pdf');
      });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40782331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档