codecamp

Atoms App 存储

使用 App 存储来存储、整理和管理正在运行的应用所使用的文件,包括图片、视频、文档和用户上传内容。

在使用 App 存储 之前,请先将项目连接到 Atoms 云。如果尚未连接,请让智能体连接 Atoms 云,或参阅 Atoms 云。

了解 Atoms 云中的 App 存储

App 存储 用于存储项目需要保留和访问的文件。它与存储在 数据库 中的结构化数据、在 Chat 中上传的文件,以及构成项目代码的文件彼此独立。

关键术语

  • Bucket: 用于存储和归类相关文件的主要容器。你可以将 bucket 理解为某一类文件的存储区域。每个 bucket 都会设置为 Public 或 Private,这决定了谁可以访问其中的文件。
  • Folder: 在 bucket 内组织文件的一种可选方式。Folder 的作用类似于你电脑上的文件夹,有助于让较大的文件集合更易于管理。
  • Object: 存储在 bucket 或 folder 中的单个文件,例如图片、文档、视频或其他上传的文件。
  • Object key: 用于标识文件在 bucket 内存储位置的唯一路径。例如,images/profile/avatar.png 可以是存储在 images/profile folder 中某张图片的 object key。

选择 Public 或 Private

请在创建 bucket 之前选择其类型:

Bucket type 用途
Private 敏感的、账户专属的或用户上传的文件。
Public 非敏感且明确可以公开暴露的文件。

敏感文件或用户专属文件请使用 Private。 如果你遇到访问错误,不要仅仅为了让文件可访问就把 bucket 改成 Public。相反,请确保你的应用会检查请求该文件的人是否有权限访问它。

在 Atoms 云中打开 App 存储

  1. 在桌面设备上打开你的项目。
  2. 在与 App 预览 所在相同的工作区工具栏中,选择 Atoms 云。
  3. 在 Atoms 云侧边栏中选择 App 存储。

App 存储中的权限

App 存储使用你的工作区角色。Editors 和 workspace owners 都可以管理他们有权打开的项目存储。不是工作区成员的人无法打开或管理该项目的 App 存储。

bucket 的 Public 或 Private 设置不会改变谁可以在 Atoms 云中管理它。该设置控制的是正在运行的应用如何提供对文件的访问;工作区权限控制的是谁可以从 Atoms 云工作区管理该存储。

创建 bucket

一个应用最多可以有 10 个 buckets。当不同文件组需要不同的访问设置,或为了更便于组织而应彼此分开时,请创建单独的 buckets。

  1. 在 App 存储 页面,选择 Create Bucket。
  2. 在 Bucket Name 下,输入 bucket 的唯一名称。名称必须:
    • 包含 3–63 个字符;
    • 只能使用小写字母、数字和连字符;并且
    • 以字母或数字开头和结尾。
  3. 在 Bucket Type 下,选择 Private 或 Public。默认选中的是 Public,因此请在继续之前确认你选择了所需的访问级别。
  4. 选择 Create。

新的 bucket 会显示在 App 存储 页面中,并显示其名称、类型和创建日期。选择该 bucket 可将其打开并查看其中内容。

在 App 存储中选择 Create Bucket。

在 App 存储中选择 Create Bucket。

Bucket 名称在创建后无法更改,因此请选择一个清晰且以后无需修改的名称。如果你的应用已经有 10 个 buckets,则 Create Bucket 将不再可用。

上传和整理文件

在 bucket 内,你可以直接上传文件,也可以在不先上传任何文件的情况下创建空 folder。

创建新 folder

  1. 打开你想要创建新 folder 的 bucket 或 folder。
  2. 选择 Add Folder。
  3. 输入 folder 名称,然后选择 Create。Folder 名称可以包含字母、数字、点号 (.)、连字符 (-) 和下划线 (_),且长度不能超过 100 个字符。Folder 名称在创建后无法更改。

为 folder 命名,然后选择 Create。

为 folder 命名,然后选择 Create。

上传文件

  1. 打开你想要存储文件的 bucket 或 folder。
  2. 选择 Upload,然后从你的设备中选择一个或多个文件。每个文件最大可为 100 MB。
  3. 等待上传完成,然后检查文件是否出现在列表中。

文件列表会显示每一项的 Name、Type、Size、Last Modified 日期以及可用的 Actions。如果你需要重新加载当前 folder 的内容,请选择 refresh 按钮。

将文件上传到所选的 bucket 或 folder。

将文件上传到所选的 bucket 或 folder。

预览和管理文件

选择某个文件以打开 File Details。支持的图片和视频可以在面板中预览。其他文件类型会显示其可用详细信息,并且仍可下载。如果积分已全部用完,File Details 会显示积分耗尽状态,单文件 Download 会引导你前往 升级,而不是直接下载。

管理单个文件

在文件的 Actions 列中打开 <strong>...</strong>,然后选择:

  • 当有可用积分时,选择 Download 以保存本地副本。如果积分已全部用完,此操作会改为引导你前往 升级。
  • 选择 Rename 以更改文件名。新名称可以使用字母、数字、点号、连字符和下划线。
  • 选择 Delete 以在确认后删除文件。

使用文件的操作菜单下载、重命名或删除文件。

使用文件的操作菜单下载、重命名或删除文件。

管理多个文件

  1. 选中每个文件旁边的复选框。Folder 不包含在批量选择中。
  2. 选择 Download 以一起下载所选文件,或选择 Delete。
  3. 如果要删除,请检查所选文件数量并确认 Delete。

无法从 App 存储中撤销删除。 在重命名或删除文件之前,请检查应用是否仍在使用其 object key。之后请更新所有已存储的引用,以免应用继续请求旧 key。

在应用中使用已存储的文件

你的应用使用其 bucket name 和 object key 来识别每个已存储文件。object key 显示文件在 bucket 中的位置。例如,images/profile/avatar.png 可以是存储在 images/profile folder 中某张图片的 object key。

请将 bucket name 和 object key 存储在应用的数据库中,以便应用稍后能够定位该文件。当应用需要显示或下载该文件时,它可以使用这些信息来请求访问 URL。

访问 URL 可能是临时的。 不要将其保存为永久性的应用数据,不要将其硬编码到应用中,也不要在 Chat、截图、日志或支持消息中分享它。相反,请存储 object key,并在需要访问文件时请求新的访问 URL。

不要在 App 存储中存储 API keys、密码或其他凭证。请将私有运行时凭证存储在 密钥 and secrets 中。只有工作区所有者才能在那里管理私有运行时凭证。如果你是 Editor,请让工作区所有者添加或更新该凭证。

当前限制

Limit 当前值
每个应用的 buckets 数量 10
每个上传文件的大小 100 MB

有关当前 Cloud 使用情况和容量信息,请参阅 Cloud \& AI Wallet。

常见问题

我的磁盘空间已满。如何释放存储空间?

  1. 检查当前存储使用情况,并找出占用空间最大的 chats、projects 或 files。
  2. 下载或备份你之后可能需要的任何内容。
  3. 仅删除你不再需要的项目。如果删除 chat 时出现移除关联磁盘数据的选项,请仅在确认这些数据可以丢弃后再选择它。
  4. 删除不需要的大文件,然后刷新并再次检查可用空间。

删除可能是永久性的,并且可能影响引用了已删除文件的项目。如果清理后使用量仍未下降,请联系 Support,并提供存储截图、你的套餐以及受影响的账户或工作区。除非通过批准的渠道被要求提供,否则不要发送文件内容。

Atoms 密钥和机密信息
Atoms 在你的应用中使用 AI
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Atoms 协作

Atoms 分享与克隆

Atoms 工作区协作

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }