上传文件
提示
请务必先阅读如何正确使用酒馆助手
点击查看对应类型定义文件 (可发给 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('文件不存在');
}