File

用于上传和存储文件的字段

file 类型的字段用于上传和存储文件。它在 UI 中显示一个 <input type="file">

示例

{
  name: "image",
  type: "file",
  uploads: "uploads",
}

可用选项

除了 通用选项 (查看字段文档获取更多信息) 之外,此字段还具有以下选项:

upload

用于存储文件的 上传实体 的名称。它是一个字符串,格式为 upload_name:directory。 例如,如果您注册了一个名为 images 的 Upload,并且想要将文件保存在 posts 子目录中,则该值为 images:posts

{
  name: "image",
  type: "file",
  upload: "images:posts"
}

如果未提供,则将使用注册的第一个 upload 值。例如:

// 注册 "images" 上传
cms.upload("images", "src:images");

cms.document("homepage", "src:index.yml", [
  "title: text",
  "content: markdown",
  "cover: file", // 默认使用 `images` 上传
]);

将图片保存在文档的同一目录下

如果您想将图片保存在与文档相同的目录中,您可以使用 {document_dirname} 占位符,它会被替换为存储文档的目录名称:

// 在 `src:posts` 中设置一个 upload 实体
cms.upload("posts-images", "src:posts");

// 将 posts 保存在同一目录 (`src:posts`) 下
cms.collection({
  name: "posts",
  store: "src:posts/**/index.md",
  // 强制每个 post 使用新文件夹
  documentName: "{title}/index.yml",
  fields: [
    "title: text",
    "content: markdown",
    {
      name: "cover",
      type: "file",
      // 将图片存储在 post 的同一文件夹中
      upload: "posts-images:{document_dirname}",
    },
  ],
});