一键保存文件(file-saver)
灵感:能力工具箱 file-save(pkg: file-saver)。
何时使用
- 导出跟进笔记、JSON 备份、CSV 文本等为本地文件
- 与 ZIP 打包联用:先生成 Blob,再
saveAs
硬约束
- 使用
file-saver的saveAs(或等价Blob+ 临时<a download>)。 - 文件名清洗非法字符;默认带扩展名。
- 空内容拒绝保存并提示。
- 标明:依赖浏览器下载权限,弹窗拦截时需用户允许。
- 与「附件打包 ZIP」区分:本 Skill 单文件/通用 Blob 下载。
推荐实现要点
import { saveAs } from 'file-saver'
export function saveTextFile(content: string, filename = 'export.txt') {
const text = String(content ?? '')
if (!text) throw new Error('内容为空,无法保存')
const safe = filename.replace(/[\\/:*?"<>|]/g, '_')
saveAs(new Blob([text], { type: 'text/plain;charset=utf-8' }), safe)
}
export function saveJsonFile(data: unknown, filename = 'export.json') {
const body = JSON.stringify(data, null, 2)
saveAs(new Blob([body], { type: 'application/json;charset=utf-8' }), filename.replace(/[\\/:*?"<>|]/g, '_'))
}
Agent 执行步骤
- 实现
saveTextFile/saveJsonFile;可选saveBlob。 - 自测:保存一段中文文本,文件可打开且编码正常。
- UI 按钮文案:「下载」/「保存到本地」。
附加
- README.md · reference.md · templates/usage.md