通过文件或者照片url地址下载文件或者照片是无法个下载文件设置名称 转为Blob 再去沟通Blob 流去下载就可以了
- 使用async/await语法,异步地从给定的URL下载数据,并返回一个Blob对象
async function downloadBlob(url: string): Promise<Blob> { /** 使用fetch函数发起一个HTTP请求来获取资源 */ const response = await fetch(url) /** 检查响应的状态码是否为200 如果不是,则抛出一个错误*/ if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`) } /** 返回 blob */ return await response.blob() }
2. 创建下载二进制数据Blob方法 指定文件名和MIME类型
const download0 = (data: Blob, fileName: string, mineType: string) => { // 创建 blob const blob = new Blob([data], { type: mineType }) // 创建 href 超链接,点击进行下载 window.URL = window.URL || window.webkitURL const href = URL.createObjectURL(blob) const downA = document.createElement('a') downA.href = href downA.download = fileName downA.click() // 销毁超连接 window.URL.revokeObjectURL(href) }
3. 使用
const downloadUlrBlob = async (href: string, filename: string) => { if (href && filename) { const blob = await downloadBlob(href) // 通过地址获取文件流 download0(blob, filename, 'application/vnd.ms-excel') // 调用下载方法 } },