dotnetcore / dotnetcore/WTM

Blazor中的下载函数在手机浏览器中不能正常下载文件

Open
#655 0 comments 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.