javascript – Angular 2下载带有身份验证的.CSV文件点击事件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Angular 2下载带有身份验证的.CSV文件点击事件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1731字,纯文字阅读大概需要3分钟。
内容图文
我正在使用spring boot后端,而我的api使用服务通过OutputStreamWriter发送数据.我可以使用像这样的点击事件在Angular 2中下载它:
打字稿
results(){
window.location.href='myapicall';
}
HTML
<button (click)="results()"
class="btn btn-primary">Export</button>
这很好用;但是,我最近为我的api端点实现了安全性,现在每次尝试拨打电话时都会收到401,因为它没有发送标头.
我写了一个服务,我可以在控制台中看到结果,但我似乎无法弄清楚如何下载文件.
DownloadFileService
import {Injectable} from '@angular/core';
import { Http, Headers } from '@angular/http';
import 'rxjs/Rx';
@Injectable()
export class DownloadFileService {
headers:Headers;
bearer: string;
constructor(public http: Http) {}
getFile(url:string) {
this.bearer = 'Bearer '+ localStorage.getItem('currentUser');
this.headers = new Headers();
this.headers.append('Authorization', this.bearer);
return this.http.get(url, {headers: this.headers});
}
}
我尝试通过blob下载数据,如本文所述:
How do I download a file with Angular2
下载的文件类型为File,内容为:
Response with status: 200 OK for URL:my url
它实际上并没有下载数据.
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);
此外,我建议您使用FileSaver下载文件,即使在2016年,似乎没有一种标准的方式来跨浏览器这样做.
let blob = new Blob([data], { type: 'text/csv' });
saveAs(blob, "data.txt");
如需更深入的指导,请查看here
内容总结
以上是互联网集市为您收集整理的javascript – Angular 2下载带有身份验证的.CSV文件点击事件全部内容,希望文章能够帮你解决javascript – Angular 2下载带有身份验证的.CSV文件点击事件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。