Files
2023-06-21 15:40:24 +08:00

75 lines
2.4 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<title>musetransfer文件下载中间页面</title></head>
<body>
<script src="jquery.min.js"></script>
<h1 id="msg"></h1>
<script>
const data = location.search.substring(1);
const url = window.atob(data);
console.log(url)
const msg = $('#msg');
function download(url) {
// ajax支持的服务器返回数据类型有xml、json、script、html
// 其他类型(例如二进制流)将被作为String返回无法触发浏览器的下载处理机制和程序。
// 从Response Headers中获取fileName
let fileName = /filename="(.*)"/g.exec(decodeURIComponent(url))[1]
if (!fileName) {
msg.text('解析文件名异常')
return
}
msg.text('解析成功, Ajax下载完成后会自动保存, 如果文件较大可能需要一定时间请耐心等待')
$.ajax({
url: url,
method: "get",
xhrFields: {responseType: "blob"},
beforeSend: function (request) {
// request.setRequestHeader("token", sessionStorage.getItem('token'));
request.setRequestHeader("token", sessionStorage.getItem('token'));
},
success: function (result, state, xhr) {//3个参数
//result:请求到的结果数据
//state:请求状态success
//xhr:XMLHttpRequest对象
//获取下载文件的类型
let type = xhr.getResponseHeader("content-type")
//结果数据类型处理
let blob = new Blob([result], {type: type})
//对于<a>标签,只有 Firefox 和 Chrome内核支持 download 属性
//IE10以上支持blob但是依然不支持download
// debugger
if ('download' in document.createElement('a')) {//支持a标签download的浏览器
//通过创建a标签实现
let link = document.createElement("a");
//文件名
link.download = fileName;
link.style.display = "none"
link.href = URL.createObjectURL(blob);
document.body.appendChild(link);
link.click();//执行下载
URL.revokeObjectURL(link.href);//释放url
document.body.removeChild(link);//释放标签
} else {//不支持
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, fileName)
}
}
},
})
}
if (url.length > 16) {
download(url)
} else {
msg.text('解析URL异常')
}
</script>
</body>