Skip to content

上传文件 ​

提示

请务必先阅读如何正确使用酒馆助手

点击查看对应类型定义文件 (可发给 AI 或 IDE 使用, 酒馆助手界面中提供了打包下载)

以下函数均操作 酒馆存档文件夹/users/files/ 文件夹内的文件.

getTavernFile ​

从 酒馆存档文件夹/users/files/ 文件夹内获取文件内容

ts
function getTavernFile(filename: string): Promise<Response>;

参数 ​

filename ​

  • 类型: string
  • 描述: 文件名

返回值 ​

  • 文件内容: Promise<Response>
  • 描述: 文件内容的 Response 对象, 随后可根据具体文件类型使用 .text()、.json() 或 .blob() 等方法使用文件内容

示例 ​

ts
// 获取 `酒馆存档文件夹/users/files/CV-vibes.json` 文件
const response = await getTavernFile('CV-vibes.json');
const data = await response.json();
ts
const response = await getTavernFile('notes.txt');
const text = await response.text();

uploadTavernFile ​

将 base64 存储的文件数据以 filename 为文件名上传到 酒馆存档文件夹/users/files/ 文件夹内

ts
function uploadTavernFile(filename: string, base64: string): Promise<string>;

参数 ​

filename ​

  • 类型: string
  • 描述: 期望的文件名

base64 ​

  • 类型: string
  • 描述: 文件内容的 base64 编码字符串

返回值 ​

  • 实际存储的文件名: Promise<string>
  • 描述: 实际存储的文件名可能与期望的文件名不同, 之后读取或删除文件时请使用该返回值

异常 ​

  • 如果上传失败, 将会抛出异常

示例 ​

ts
// 上传一个名为 `CV-vibes.json` 的文件, 内容为 `{"foo": "bar"}`
const filename = await uploadTavernFile('CV-vibes.json', 'eyJmb28iOiAiYmFyIn0=');
ts
const data = { foo: 'bar', 中文: '内容' };
// 先将字符串按 UTF-8 编码, 再转为 base64, 以免中文等字符出错
const bytes = new TextEncoder().encode(JSON.stringify(data));
const base64 = btoa(Array.from(bytes, byte => String.fromCharCode(byte)).join(''));
const filename = await uploadTavernFile('data.json', base64);
ts
const response = await fetch(文件网络链接);
const blob = await response.blob();
const base64 = await new Promise<string>(resolve => {
  const reader = new FileReader();
  // 结果形如 `data:image/png;base64,xxxx`, 只需要逗号之后的部分
  reader.onload = () => resolve((reader.result as string).split(',')[1]);
  reader.readAsDataURL(blob);
});
const filename = await uploadTavernFile('image.png', base64);

deleteTavernFile ​

从 酒馆存档文件夹/users/files/ 文件夹内删除指定文件

ts
function deleteTavernFile(filename: string): Promise<boolean>;

参数 ​

filename ​

  • 类型: string
  • 描述: 要删除的文件名

返回值 ​

  • 是否删除成功: Promise<boolean>
  • 描述: 如果文件存在且删除成功则返回 true; 如果文件不存在则返回 false

异常 ​

  • 如果删除失败, 将会抛出异常

示例 ​

ts
// 删除 `酒馆存档文件夹/users/files/CV-vibes.json` 文件
const deleted = await deleteTavernFile('CV-vibes.json');
if (!deleted) {
  toastr.warning('文件不存在');
}