文档/TempFile SDK
通用开发

TempFile SDK

TempFile SDK

概述

TempFile SDK 用于创建短生命周期的临时文件,适合缓存下载结果、临时导出内容或在插件间传递文件句柄。

介绍

TempFile SDK 用于创建短生命周期的临时文件,适合缓存下载结果、临时导出内容或在插件间传递文件句柄。

技术原理

  • 主进程 TempFileService 统一管理临时目录与清理策略。
  • 通过 temp-file:create / temp-file:delete IPC 完成创建与删除。
  • 支持可选 retentionMs,由主进程定期清理。

如何实现的

  • 临时文件位于 userData/temp/<namespace>
  • SDK 只负责参数封装与结果校验,真正的文件写入与生命周期由主进程处理。

如何使用

插件侧

EXAMPLE.TYPESCRIPT
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)

应用渲染进程

EXAMPLE.TYPESCRIPT
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
})

常见例子

  1. 远程 SVG 下载后落地到临时目录,再通过 tfile:// 访问。
  2. 导出调试日志到临时文件后打开查看。

常见问题

Q: 临时文件会自动清理吗?
A: 会。若设置了 retentionMs,主进程会周期性清理过期文件。

Q: 为什么访问不了 tfile://
A: 该协议仅在 Electron 环境可用,浏览器环境会被拒绝。

Q: 在 Electron 里还是 403?
A: tfile:// 仅允许访问白名单根目录(home/userData/temp 与系统应用目录)。请使用临时文件 API 或将资源移入允许目录。

最佳实践

  • 使用明确的 namespace,便于清理与排查。
  • 合理设置 retentionMs,避免临时文件长期堆积。
  • 大文件优先使用文件路径方式,避免大文本直接传输。