Loving Tina? us on GitHub0.0k
v.Latest
Documentation

基于仓库的媒体

在此页面上

TinaCMS 有一个内置的基于仓库(git)的媒体存储选项。或者,您可以将您的CMS连接到外部媒体存储提供商。

基于仓库的媒体将您的资产与内容放在一起,这意味着您可以跟踪更改并回滚代码和媒体的版本

这还有其他好处,如减少依赖性、使用外部API、本地开发和预览环境之间的同步。

看不到您的媒体?要在媒体管理器中查看您的媒体,您需要在媒体管理器中按下“同步媒体”按钮。这将从GitHub中提取所有媒体并将其添加到TinaCMS中。

配置

要在您的项目中配置基于仓库的媒体,请在tina/config.{ts,js}中的架构定义中添加以下内容

//tina/config.{ts,js}
export default defineConfig({
// ...
media: {
tina: {
publicFolder: 'public',
mediaRoot: 'uploads',
static: false, //默认是false
},
},
});

资产存储路径

publicFolder设置为您网站“public”文件夹的路径。此路径是相对于您项目的根目录的。

对于任何NextJS网站(例如我们的tina-cloud-starter),此值应为"public"

媒体存储路径

媒体文件夹的路径,相对于publicFolder值。

如果您希望将媒体上传到publicFolder的根目录,请将其设置为""

此目录中的任何内容都将与TinaCloud的媒体服务器同步,图像将公开可访问。

媒体权限

static属性决定了媒体文件是否可以通过编辑器直接上传、编辑或删除。

  • static: true 编辑者不能上传/删除媒体(静态资产)
  • static: false(默认):编辑者可以上传/删除媒体(动态资产)。

支持的媒体类型

默认支持以下文件类型

格式

MIME类型

示例

Adobe InDesign

application/x-indesign

.indd

Apple HTTP Live Streaming

application/vnd.apple.mpegurl

.m3u8

二进制文件

application/octet-stream

.bin

Filmbox

model/fbx

.fbx

GL传输格式(JSON)

model/gltf+json

.gltf

图像

image/*

.jpg, .png, .gif等

JSON

application/json

.json

JSON-LD

application/ld+json

.jsonld

材料交换格式

application/mxf

.mxf

Microsoft Excel(旧版)

application/vnd.ms-excel

.xls

Microsoft Excel(OpenXML)

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

.xlsx

Microsoft Word(旧版)

application/msword

.doc

Microsoft Word(OpenXML)

application/vnd.openxmlformats-officedocument.wordprocessingml.document

.docx

MPEG-DASH

application/dash+xml

.mpd

PDF

application/pdf

.pdf

多边形文件格式

model/ply

.ply

PostScript

application/postscript

.ps, .eps等

文本文件

text/*

.txt, .md等

U3D网格

model/u3d+mesh

.u3d

USDZ压缩包

model/vnd.usdz+zip

.usdz

视频

video/*

.mp4, .avi, .mkv等

如果您想指定自己的允许文件类型,请在**media**属性中添加以下内容

//tina/config.{ts,js}
export default defineConfig({
// ...
media: {
tina: {
//..
},
accept: ['image/jpeg', 'video/mp4'],
},
});

NextJS图像

如果您使用NextJS图像,您需要在next.config.js文件中添加如下内容以允许访问外部图像。

module.exports = {
images: {
remotePatterns: [
{
protocol: 'https',
hostname: 'assets.tina.io',
port: '',
},
],
},
};

这里了解更多关于远程模式的信息。

最大文件大小

上传文件到TinaCloud时,允许的最大文件大小为100 MiB。

这如何与分支协作?

基于仓库的媒体设计用于单一分支工作流。如果您的项目使用多个分支编辑工作流,需要注意一些已知的限制。

  • 图像一旦上传就不能更改,任何后续对资产的更改都不会反映。
  • 如果您只有一个启用媒体的分支,媒体存储将从该分支获取/上传图像。
  • 如果您有多个启用媒体的分支,则所有媒体将从/上传到存储库的默认分支。
  • 媒体文件不能通过媒体管理器重命名。请参阅下面的重命名媒体文件以获取解决方法。

如果您在非默认分支上配置Tina(且Tina配置尚未合并到您的默认分支),您可能会在TinaCloud媒体设置中看到此消息:

为了解决这个问题,您可能需要在将Tina合并到默认分支后启用媒体。

重命名媒体文件

基于仓库的媒体不支持通过媒体管理器重命名文件。因为媒体只跟踪单一分支,所以没有可用于媒体操作(如重命名)的分支功能。

如果跟踪的分支启用了分支保护规则,尝试上传文件的重命名版本将保存文件到媒体存储(S3),但更改将不会提交到受保护的分支。这导致新文件被存储但未在您的存储库中反映。

解决方法: 要重命名媒体文件,请在GitHub中直接执行以下步骤:

  1. 在GitHub上导航到您的存储库,并在您的媒体目录中找到媒体文件(例如public/uploads/
  2. 直接在GitHub中删除旧文件
  3. 等待删除同步回TinaCloud
  4. 直接在GitHub中添加新名称的文件
  5. 等待新文件同步回TinaCloud
这个解决方法是必要的,因为直接在GitHub中进行的更改将同步回TinaCloud,绕过单一分支媒体限制。
上次编辑: September 18, 2025