TempFile SDK
TempFile SDK
概述
TempFile SDK 用于创建短生命周期的临时文件,适合缓存下载结果、临时导出内容或在插件间传递文件句柄。
介绍
TempFile SDK 用于创建短生命周期的临时文件,适合缓存下载结果、临时导出内容或在插件间传递文件句柄。
技术原理
- 主进程
TempFileService统一管理临时目录与清理策略。 - 通过
temp-file:create/temp-file:deleteIPC 完成创建与删除。 - 支持可选
retentionMs,由主进程定期清理。
如何实现的
- 临时文件位于
userData/temp/<namespace>。 - SDK 只负责参数封装与结果校验,真正的文件写入与生命周期由主进程处理。
如何使用
插件侧
import { useTempPluginFiles } from '@talex-touch/utils/plugin/sdk'
const temp = useTempPluginFiles()
const result = await temp.create({
ext: 'svg',
text: '<svg></svg>',
retentionMs: 24 * 60 * 60 * 1000
})
// tfile://...
console.log(result.url)
应用渲染进程
import { useTouchSDK } from '@talex-touch/utils/renderer'
const sdk = useTouchSDK()
const result = await sdk.createTempFile({
namespace: 'icons/svg',
ext: 'svg',
text: '<svg></svg>',
retentionMs: 7 * 24 * 60 * 60 * 1000
})
常见例子
- 远程 SVG 下载后落地到临时目录,再通过
tfile://访问。 - 导出调试日志到临时文件后打开查看。
常见问题
Q: 临时文件会自动清理吗?
A: 会。若设置了 retentionMs,主进程会周期性清理过期文件。
Q: 为什么访问不了 tfile://?
A: 该协议仅在 Electron 环境可用,浏览器环境会被拒绝。
Q: 在 Electron 里还是 403?
A: tfile:// 仅允许访问白名单根目录(home/userData/temp 与系统应用目录)。请使用临时文件 API 或将资源移入允许目录。
最佳实践
- 使用明确的
namespace,便于清理与排查。 - 合理设置
retentionMs,避免临时文件长期堆积。 - 大文件优先使用文件路径方式,避免大文本直接传输。