如何通过核心服务从Tridion获取多媒体类型的tcm id,比如jpg



Tridion的"管理"文件夹中有许多多媒体类型。我想编写一个返回给定 mime 类型的 tcm id 的方法,例如对于 gif mime 类型,它应该返回"tcm:0-1-65544"。

谁能对此有想法?

每个架构都有一个名为 AllowedMultimediaType 的属性,该属性返回一个列表,并且默认多媒体架构通常设置为允许所有类型。 如果它不允许所有类型,则可以为此目的创建一个特殊的架构。

因此,您所要做的就是获取默认多媒体模式的 AllowedMultimediaType(或允许所有类型的特殊模式),然后将输入的 mime 类型与返回的每个 MultimediaType 的 mimetime 匹配。

以下是顶部的一些示例(未测试):

Schema defaultMMSchema = (Schema)engine.GetObject("Your-Default-MMSchema-WebDav-Path");
IList<MultimediaType> mmTypes = defaultMMSchema.AllowedMultimediaTypes;
foreach(MultimediaType mt in mmTypes)
{
  switch(mt.MimeType)
  {
    case "jpg":
    ...
  }
}

或者,现成多媒体类型的 TCM ID 是恒定的,因此您无需担心它们在内容移植到另一个环境后会发生变化。 因此,您可以编写一个类,该类提供 mime 类型到 tcm ID 的映射。 注意:如果您创建自定义项目类型,这将不那么优雅,因为您需要在每个 Tridion 环境中使用其 TCM ID 更新代码。

您可以获取所有多媒体类型的列表,然后选择所需的一种:

var mmType = ClientAdmin.GetSystemWideList(new MultimediaTypesFilterData()).Single(mt => ((MultimediaTypeData)mt).MimeType == "image/jpeg");

最新更新