對於角度-CLI以http:
npm install file-saver --save
添加該第三方LIB到.angular-cli.json
"scripts": [
"../node_modules/file-saver/FileSaver.js"
],
在布拉布拉服務:
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我無法使它與打字稿定義一起工作,這就是爲什麼我去了聲明文件的路線。我一直得到「TypeError:file_saver_1.saveAs不是函數」。您可以將聲明文件放在項目根文件夾中。 – dipole