【问题标题】:How to get tcm id of a multimedia type say jpg from Tridion through Core Service?如何通过核心服务从 Tridion 获取多媒体类型的 tcm id,比如 jpg?
【发布时间】:2012-05-07 05:43:26
【问题描述】:

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

有人对此有什么想法吗?

【问题讨论】:

  • 你想做客户端还是服务器端?
  • 希望通过核心服务

标签: tridion


【解决方案1】:

每个模式都有一个名为 AllowedMultimediaTypes 的属性,它返回一个列表,默认多媒体模式通常设置为允许所有类型。如果它不允许所有类型,那么您可以为此目的创建一个特殊模式。

因此,您所要做的就是获取默认多媒体模式(或允许所有类型的特殊模式)的 AllowedMultimediaTypes,然后将您输入的 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 更新您的代码。

【讨论】:

  • @Nickoli 感谢您提供的信息,但如果您可以分享有关使用 AllowedMultimediaTypes 的代码简报,那么它将对我有很大帮助。谢谢
  • 我已经用一些示例代码为您更新了答案(注意:您需要在示例代码的 switch 语句中验证 mime 类型)。编码愉快!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 2012-09-11
    相关资源
    最近更新 更多