基于仓库的媒体
TinaCMS 提供了内置的基于仓库(git)的媒体存储选项。或者,你可以将你的CMS连接到外部媒体存储提供商。
基于仓库的媒体将你的资产与内容放在一起,这意味着你可以跟踪代码和媒体的更改并回滚版本。
这还有其他好处,比如减少对外部API的依赖,并保持本地开发和预览环境的同步。
看不到你的媒体?对于新创建的项目,初始媒体同步会自动触发,可能仍在进行中。如果你的媒体仍未出现,你可以从 TinaCloud 项目仪表板的媒体选项卡中手动触发同步。
配置
要在你的项目中配置基于仓库的媒体,请在 tina/config.{ts,js} 中的架构定义中添加以下内容:
//tina/config.{ts,js}export default defineConfig({// ...media: {tina: {publicFolder: 'public',mediaRoot: 'uploads',static: false, //默认是 false},},});
资产存储路径
将 publicFolder 设置为你网站的“public”文件夹的路径。此路径是相对于项目根目录的。
对于任何 Next.js 网站(例如我们的 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 图像
如果你正在使用 Next.js 图像,你需要在 next.config.js 文件中添加如下内容以允许访问外部图像。
module.exports = {images: {remotePatterns: [{protocol: 'https',hostname: 'assets.tina.io',port: '',},],},};
了解更多关于 Next.js 远程模式。
最大文件大小
上传文件到 TinaCloud 时,最大允许文件大小为 100 MiB。
这如何与分支协作?
基于仓库的媒体设计用于单一分支工作流。如果你的项目正在使用多个分支或编辑工作流,需要注意一些已知的限制。
- 图像不能被更改。一旦上传,任何后续对资产的更改都不会反映出来。
- 如果你只有一个启用媒体的分支,媒体存储将从该分支获取/上传图像。
- 如果你有多个启用媒体的分支,那么所有媒体将从/上传到仓库的默认分支。
- 媒体文件不能通过媒体管理器重命名。请参阅下面的重命名媒体文件以获取解决方法。
如果你在非默认分支上配置 Tina(且 Tina 配置尚未合并到默认分支),项目创建时的自动媒体同步可能无法找到你的媒体配置。在这种情况下,TinaCloud 项目仪表板中的媒体选项卡将显示媒体尚未同步。一旦你的 Tina 配置合并到默认分支,你可以从该选项卡手动触发同步。
重命名媒体文件
基于仓库的媒体不支持通过媒体管理器重命名文件。因为媒体只跟踪一个分支,所以没有可用于媒体操作(如重命名)的分支功能。
如果被跟踪的分支启用了分支保护规则,尝试上传文件的重命名版本将保存文件到媒体存储(S3),但更改将不会提交到受保护的分支。这导致新文件被存储但未在你的仓库中反映。
解决方法: 要重命名媒体文件,请在 GitHub 中直接执行以下步骤:
- 在 GitHub 上导航到你的仓库,并在媒体目录中找到媒体文件(例如
public/uploads/) - 直接在 GitHub 中删除旧文件
- 等待删除同步回 TinaCloud
- 直接在 GitHub 中添加新名称的文件
- 等待新文件同步回 TinaCloud
这个解决方法是必要的,因为直接在 GitHub 中进行的更改将同步回 TinaCloud,绕过单一分支媒体限制。