背景: 标签的 download 跨域设置名称无效
思路:下载链接按照 流 格式 下载下来 在组装,下载到本地的 流 就是同域了
let downChangeName = (downUrl='',downFilename)=>{
if(!downUrl){
window.alert('请传入下载链接')
return
}
let filename = '';
let url = downUrl ;
let fileType = downUrl.substr(downUrl.lastIndexOf('.'))
let downUrlName = downUrl.substr(downUrl.lastIndexOf('/')+1)
// 文件名称处理
if(downFilename){
let downFilenameFileType = downFilename.substr(downFilename.lastIndexOf('.'))
console.log(120000,downFilenameFileType)
if(downFilenameFileType === fileType ){
filename = downFilename
} else{
filename = downFilename.substr(0,downFilename.lastIndexOf('.')) + fileType
}
} else{
filename = downUrlName
}
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function () {
if (xhr.status === 200) {
console.log(1114,xhr)
// cb(xhr.response);
var link = document.createElement('a');
var body = document.querySelector('body');
link.href = window.URL.createObjectURL(xhr.response);
link.download = filename;
body.appendChild(link);
link.click();
body.removeChild(link);
window.URL.revokeObjectURL(link.href);
}
};
xhr.send();
}