Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular 2下载.CSV文件单击事件与身份验证_Javascript_Angular_Typescript_Download_Fileapi - Fatal编程技术网

Javascript Angular 2下载.CSV文件单击事件与身份验证

Javascript 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

我使用的是spring引导后端,api使用服务通过OutputStreamWriter发送数据。我可以在Angular 2中使用如下单击事件下载此文件:

Typescript

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);