/** * 调用一个浏览器下载一个 File 或者 Blob 或者链接 * @param file * @param name */ export function downloadFile(file: File | Blob | string, name?: string) { if (typeof file === "string") { let a = document.createElement("a") if (name) a.download = name a.rel = "noopener" a.href = file setTimeout(() => { a.click() }, 0) } else { const URL = window.URL || (window).webkitURL let a = document.createElement("a") let fileName: string = name ? name : (file).name a.download = fileName a.rel = "noopener" a.href = URL.createObjectURL(file) // 40s 后回收 ObjectURL setTimeout(() => { URL.revokeObjectURL(a.href) ;(a as any) = null }, 40000) setTimeout(() => { a.click() }, 0) return a.href } }