/** * 根据url和name下载文件 * @param url 文件url * @param name 文件名 */ export const downloadFile = (url: string | undefined, name: string): void => { if (!url) return; // 创建XMLHttpRequest请求 const request = new XMLHttpRequest(); request.responseType = "blob"; // 打开请求 request.open("GET", encodeURI(url)); // 设置onload回调函数 request.onload = function () { if (this.status === 200) { // 创建Blob URL const blobUrl = window.URL.createObjectURL(this.response); // 创建a标签 const link = document.createElement('a'); // 设置下载链接 link.href = blobUrl; // 设置下载文件名 link.download = name; // 设置链接样式为不可见 link.style.display = 'none'; // 添加到文档中 document.body.appendChild(link); // 触发点击事件执行下载 link.click(); // 下载完成后移除该元素 document.body.removeChild(link); // 释放blob URL window.URL.revokeObjectURL(blobUrl); } }; // 添加错误处理 request.onerror = function() { console.error('下载文件失败'); }; // 发送请求 request.send(); };