基于仓库的媒体
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 |
| .indd |
Apple HTTP Live Streaming |
| .m3u8 |
二进制文件 |
| .bin |
Filmbox |
| .fbx |
GL传输格式(JSON) |
| .gltf |
图像 |
| .jpg, .png, .gif等 |
JSON |
| .json |
JSON-LD |
| .jsonld |
材料交换格式 |
| .mxf |
Microsoft Excel(旧版) |
| .xls |
Microsoft Excel(OpenXML) |
| .xlsx |
Microsoft Word(旧版) |
| .doc |
Microsoft Word(OpenXML) |
| .docx |
MPEG-DASH |
| .mpd |
| ||
多边形文件格式 |
| .ply |
PostScript |
| .ps, .eps等 |
文本文件 |
| .txt, .md等 |
U3D网格 |
| .u3d |
USDZ压缩包 |
| .usdz |
视频 |
| .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中直接执行以下步骤:
- 在GitHub上导航到您的存储库,并在您的媒体目录中找到媒体文件(例如
public/uploads/) - 直接在GitHub中删除旧文件
- 等待删除同步回TinaCloud
- 直接在GitHub中添加新名称的文件
- 等待新文件同步回TinaCloud
这个解决方法是必要的,因为直接在GitHub中进行的更改将同步回TinaCloud,绕过单一分支媒体限制。