Javascript Angular 2下载.CSV文件单击事件与身份验证
我使用的是spring引导后端,api使用服务通过OutputStreamWriter发送数据。我可以在Angular 2中使用如下单击事件下载此文件: TypescriptJavascript Angular 2下载.CSV文件单击事件与身份验证,javascript,angular,typescript,download,fileapi,Javascript,Angular,Typescript,Download,Fileapi,我使用的是spring引导后端,api使用服务通过OutputStreamWriter发送数据。我可以在Angular 2中使用如下单击事件下载此文件: Typescript results(){ window.location.href='myapicall'; } HTML <button (click)="results()" class="btn btn-primary">Export</button> 我尝试通过blo
results(){
window.location.href='myapicall';
}
HTML
<button (click)="results()"
class="btn btn-primary">Export</button>
我尝试通过blob下载数据,正如本文所建议的:
下载的文件类型为file,内容为:
对URL:my URL的状态为200 OK的响应
它实际上并没有下载数据
downloadFile(data: any){
var blob = new Blob([data], { type: 'text/csv' });
var url= window.URL.createObjectURL(blob);
window.open(url);
}
results(){
// window.location.href='myapicall';
let resultURL = 'myapicall';
this.downloadfileservice.getFile(resultURL).subscribe(data => this.downloadFile(data)),//console.log(data),
error => console.log("Error downloading the file."),
() => console.info("OK");
}
看起来您只需要解析响应的主体,即
let parsedResponse = data.text();
this.downloadFile(parsedResponse);
此外,我建议您使用下载文件,因为即使在2016年,似乎也没有一种跨浏览器执行此操作的标准方法
let blob = new Blob([data], { type: 'text/csv' });
saveAs(blob, "data.txt");
要获得更深入的指南检查,我也使用了
FileSaver
。如果您在客户端有扩展名,您可以看到它将在CSV
文件中正常工作。您只需手动添加扩展名:
FileSaver.saveAs(res, 'export' + extension);
这就是问题所在,谢谢!我假设我可以在我的服务中做一个文本映射。我将看一看FileSaver.js,希望它能解决我保存为类型文件的问题。你知道我需要向组件添加什么来识别saveAs函数吗?我尝试过:var FileSaver=require('file-saver');但似乎不起作用你用的是什么模块加载器?我正在使用angular cli,它使用Web包。要包含第三方lib,请在
angular cli.json
中将文件路径添加到lib中。e、 g添加以下“脚本”:[“./node_modules/file saver/FileSaver.js”],我正在使用angular2种子:我将它添加到我的项目配置中,并尝试通过npm I@types/file saver添加键入内容--save实际上,我的IDE只是抛出了一个错误。如果你想创建csv文件,可以这样做
FileSaver.saveAs(res, 'export' + extension);