Appearance
文件下载 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) => void | Blob 落盘(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) => boolean | Base64 落盘,自动剥离 data: 前缀并识别 mime;非法 Base64 告警并返回 false |
TIP
异步导出任务(轮询 + 进度 + 完成下载)用 BizTaskCenter;简单接口流导出用 BizExportButton。本 hook 面向自定义交互中的一次性落盘。