httpで角度-CLI(HttpClientを続い):
npm install file-saver --save
が.angular-cli.jsonにする
"scripts": [
"../node_modules/file-saver/FileSaver.js"
],
をblablaサービスでは、このサードパーティのlibを追加します:
downloadBlaBlasCSV() {
let options = {responseType: ResponseContentType.ArrayBuffer };
return this.http.get(this.config.apiUrl + '/blablasCSV', options)
.catch((err: Response) => Observable.throw(err.json()));
}
最後に、コンポーネント:
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のような同じですが、サービスは方法が異なる:それは働いた
downloadBlaBlasCSV() {
return this.httpClient.get(this.config.apiUrl + '/blablasCSV', {
headers: new HttpHeaders().set('Accept', 'text/csv'),
observe: 'response',
responseType: 'blob'
})
}
感謝。私は間違ったライブラリを最初にインポートしました –
@dipole:ファイルセーバーgithubページから、typescript定義 'npm install @ types/file-saver --save-dev'をインストールする方法を教えてくれました。上記のように宣言ファイルを追加する必要がありますか?私のプロジェクトのルートフォルダには、アプリケーションフォルダと、systemjs.config.jsファイルのような他のファイルがあります。必要に応じて、どこに追加する必要がありますか?アプリのフォルダ内またはプロジェクトのルートフォルダのすぐ下にありますか? –
@ Ng2-Fun私はそれがtypescriptの定義で動作するようにすることができませんでした。なぜそれが宣言ファイルのルートに行きましたか?私は "TypeError:file_saver_1.saveAsは関数ではありません"と続けていました。宣言ファイルは、プロジェクトのルートフォルダに置くことができます。 – dipole