angular - 在Angular 5中通过blob下载时设置文件名
问题描述
下面是我从 API 下载文件的 Typescript 代码
DownloadLM() {
var ID= sessionStorage.getItem("UserID");
return this.http.get(this.baseurl + 'api/DownloadFiles/DownloadLM/' + ID,
{
headers: {
'Content-Type': 'application/json'
},
responseType: 'arraybuffer'
}
)
.subscribe(respData => {
this.downLoad(respData, this.type);
}, error => {
});
}
downLoad(data: any, type: string) {
var blob = new Blob([data], { type: type.toString() });
var url = window.URL.createObjectURL(blob);
var pwa = window.open(url);
if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {
alert('Please disable your Pop-up blocker and try again.');
}
}
这很好下载 Excel 文件,但它给了我不想要的文件的随机名称,我想在下载时设置我选择的文件名,
我在哪里可以设置文件名?Blob 的任何属性?
解决方案
您可以将下载属性设置为您想要的文件名,将href设置为对象url,然后只需调用click
var blob = new Blob([data], { type: type.toString() });
var url = window.URL.createObjectURL(blob);
var anchor = document.createElement("a");
anchor.download = "myfile.txt";
anchor.href = url;
anchor.click();
推荐阅读
- docker - Ruby Dockerfile - 无法使用 Dockerfile 在 Ruby 映像中安装和配置 elasticsearch
- node.js - mongoose 文档 this.save 重复键 _id 错误
- sql-server - MSSQL 获取往年的记录,其中日期和月份小于当前日期和月份
- javascript - Javascript - 在页面加载时自动单击按钮
- angularjs - okta登录成功但重定向页面在angularjs中不起作用
- c# - 在 UserControl 中设置 ImageBox 的图像 - c#
- docker - 交错的 docker 堆栈部署
- amazon-dynamodb - aiobotocore dynamodb 没有属性“has_event_stream_output”
- java - 骆驼发送多部分/表单数据请求
- android - 当我尝试添加 firebase 添加 firebase sdk