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}",
},
],
});