Blazor中的下载函数在手机浏览器中不能正常下载文件
- Dominant language
- C#
- Stars
- 4.3k
- Forks
- 896
- PR merge metrics
- No merged PRs in 30d
Description
应该是XMLHttpRequest的问题,使用fetch函数可以下载,可惜也不维护了
`
download: function (url, data, method = "POST") {
var xhr = new XMLHttpRequest();
xhr.open(method, url, true); // 也可以使用POST方式,根据接口
xhr.responseType = "blob"; // 返回类型blob
xhr.setRequestHeader('content-type', 'application/json');
xhr.setRequestHeader('Authorization', 'Bearer ' + localStorageFuncs.get("wtmtoken"));
xhr.onload = function () {
if (this.status === 200) {
var fname = this.getResponseHeader("content-disposition");
var filename = "";
if (/filename\*=UTF-8''(.*?)($|;|\s)/.test(fname)) {
filename = RegExp.$1;
}
else if (/filename=(.*?)($|;|\s)/.test(fname))
{
filename = RegExp.$1;
}
filename = decodeURI(filename);
var blob = this.response;
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function (e) {
var a = document.createElement('a');
a.download = filename;
a.href = e.target.result;
document.body.append(a);
a.click();
a.remove();
}
}
};
// 发送ajax请求
xhr.send(data)
}
`
Contributor guide
Assessment
This issue has not been assessed yet.