Skip to content

文件下载 Hooks:useDownload ​

useDownload 提供四路落盘的统一出口:Blob / 文本 / 链接 / Base64,纯浏览器原生能力(objectURL + a[download]),不内置请求逻辑——接口数据由业务层先行取回后交给本 hook 落盘。导出报表、生成配置文件、保存 Base64 图片等场景。

基本用法 ​

ts
import { useDownload } from 'vue3-ep-biz-lib'

const { downloadText, downloadBlob, downloadUrl, downloadBase64 } = useDownload()

// 1. 文本 / CSV 导出(注意 CSV 中文需 BOM 防 Excel 乱码)
downloadText('\ufeffid,name\n1,张三', 'users.csv', 'text/csv;charset=utf-8')

// 2. Blob 导出(接口返回的文件流)
const res = await fetch('/api/export?month=2026-10')
downloadBlob(await res.blob(), '2026-10-report.xlsx')

// 3. 链接直下(同源 / Content-Disposition 场景)
downloadUrl('/files/manual.pdf', '用户手册.pdf')

// 4. Base64 落盘(兼容 data:image/png;base64,xxx 完整前缀)
downloadBase64(base64Png, 'avatar.png')

API ​

useDownload(): UseDownloadReturn ​

成员类型说明
downloadBlob(blob: Blob, filename: string) => voidBlob 落盘(objectURL 点击后延时回收)
downloadText(text: string, filename: string, mime?: string) => void文本落盘,默认 text/plain;charset=utf-8
downloadUrl(url: string, filename?: string) => void链接落盘;跨域且无 Content-Disposition 时浏览器可能转为打开
downloadBase64(data: string, filename: string, mime?: string) => booleanBase64 落盘,自动剥离 data: 前缀并识别 mime;非法 Base64 告警并返回 false

TIP

异步导出任务(轮询 + 进度 + 完成下载)用 BizTaskCenter;简单接口流导出用 BizExportButton。本 hook 面向自定义交互中的一次性落盘。