mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2025-12-16 20:33:03 +00:00
75 lines
2.4 KiB
HTML
75 lines
2.4 KiB
HTML
<!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>
|