话不多说,间接上菜,请各位大佬提出不同意见
/** * @filename <string> 自定义的文件名 * @url <string> 下载地址 */export function renameDownloadFile(filename,url){ // 获取文件 getBlob(url).then(blob => { // 保留文件 saveAs(blob, filename); })}// 重命名下载export function getBlob(url) { // 创立Promise对象 return new Promise(resolve => { // 创立XMLHttpRequest对象 const xhr = new XMLHttpRequest(); // 设置申请形式 xhr.open('GET', url, true); // 设置响应类型 xhr.responseType = 'blob'; // 当申请实现时,触发onload事件 xhr.onload = () => { // 如果响应状态码为200,则解析响应 if (xhr.status === 200) { resolve(xhr.response); } }; // 发送申请 xhr.send(); });}export function saveAs(blob, filename) { // 如果反对msSaveOrOpenBlob办法,则应用msSaveBlob办法保留文件 if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob, filename); } else { // 创立a标签 const link = document.createElement('a'); // 获取body元素 const body = document.querySelector('body'); // 设置a标签的href属性 link.href = window.URL.createObjectURL(blob); // 设置a标签的download属性 link.download = filename; // 当a标签被点击时,触发onclick事件 // fix Firefox link.style.display = 'none'; body.appendChild(link); // 点击a标签,触发onclick事件 link.click(); // 销毁a标签 body.removeChild(link); // 开释a标签的href属性 window.URL.revokeObjectURL(link.href); }}