背景: 标签的 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();
}
该博客探讨了如何解决下载链接的跨域问题,通过使用流格式下载文件并重新组装,确保本地下载的文件没有跨域限制。文章详细介绍了使用XMLHttpRequest进行GET请求,设置responseType为blob,然后利用创建的a标签实现文件下载,并能根据需求更改文件名。
2661

被折叠的 条评论
为什么被折叠?



