【发布时间】:2019-01-27 20:22:57
【问题描述】:
当我将my_example_link 粘贴到浏览器中时,文件会以正确的方式自动下载。但是,当我使用下面显示的源代码时,下载不起作用。单击download 按钮后,我想下载文件。有什么想法有什么问题吗?我没有收到任何错误。
user.service.ts:
DownloadFiles() {
return this.http.get('my_example_link', {responseType: 'text'});
}
uploader.service.ts:
DownloadFile(){
this.userService.DownloadFiles()
.subscribe(
(data) => this.downloadFile2(data)), // console.log(data),
(error) => console.log("Error downloading the file."),
() => console.info("OK");
}
downloadFile2(data: Response){
var blob = new Blob([data], { type: 'text/csv' });
var url= window.URL.createObjectURL(blob);
window.open(url);
}
something.component.html:
<li class="nav-item" *ngIf="isCloud()">
<a (click)="this.UploaderService.DownloadFile()" download="file23.txt" style='cursor: pointer;' class="nav-link" target="_blank">
<i class="nc-icon nc-basket"></i> Download
</a>
</li>
【问题讨论】:
-
获取文件下载的最简单方法是使用此处显示的大多数现代浏览器本机提供的下载属性:w3schools.com/tags/att_a_download.asp ...如果您绝对必须通过 xhr 进行,那么最简单的方法方法是在服务器上设置正确的响应头。否则你会头疼。
-
@bryan60 问题是我使用
HttpResponseRedirect通过后端从hadoop下载了这个文件,所以我需要以blob形式发送数据,然后将其保存在用户的本地系统中。跨度>
标签: angular html typescript angular5