在Kentico 7中,我需要从附件URL获取附件信息

时间:2017-10-04 02:42:06

标签: kentico

当Kentico文档中嵌入图像时,图像将作为<img>标记插入HTML中。我需要确定此图像是否由Kentico托管,如果是,请使用Kentico API检索它的数据库信息。

到目前为止,我已经从URL中解析了文件GUID,如下所示:

    const string attachmentPrefix = "~/getattachment/";
    if (imageElement.LinkAddress.StartsWith(attachmentPrefix))
    {
        var start = attachmentPrefix.Length;
        var end = imageElement.LinkAddress.IndexOf("/", start);
        var fileGuidString = imageElement.LinkAddress.Substring(start, end - start);
        var fileGuid = new Guid(fileGuidString);
        var info = AttachmentHistoryInfoProvider.GetInfoByGuid("-- what goes here --", fileGuid);
    }

但是我没有在Kentico API中找到任何有用的方法,它们将从GUID检索有关附件的信息。我找到的最接近的是AttachmentHistoryInfoProvider.GetInfoByGuid(),但它需要一个objectType参数,我找不到任何文档。

有人知道如何从文件GUID开始获取Kentico 7中附件的信息吗?

1 个答案:

答案 0 :(得分:1)

您提到您正在谈论媒体库中的图片,但正在尝试使用代码示例中的AttachmentHistoryInfoProvider。我认为这取决于你所说的“文件中嵌入了媒体库图像”&#39 ;;你以什么方式嵌入它们?例如,可能使用可编辑图像 Web部件。

  • 如果您使用的是媒体库中的文件,则应尝试使用MediaFileInfoProvider.GetMediaFileInfo(Guid, string),其中包含文件的Guid和站点代码名称。这将返回MediaFileInfo课程。您可以在Kentico 7的CMS.DataEngine程序集中找到它。对于媒体库中的文件,我希望看到要呈现的/SampleSite/media/cats/nohandskitten.aspx这样的网址。

  • 如果您不使用媒体库中的图片,但直接插入内容,则是 - 这是附件。您应该使用AttachmentHistoryInfoProvider,而不是使用AttachmentInfoProvider。使用文件的Guid和站点代码名称调用AttachmentInfoProvider.GetAttachmentInfo(Guid, string)将返回AttachmentInfoObject。我相信如果你启用了对象版本控制,AttachmentHistoryInfoProvider只会返回给你的东西。对于来自附件的文件,我希望看到类似/getattachment/75408145-0995-45dc-943a-d27296a45327/nohandskitten.jpg.aspx的网址。

这些InfoProviders做了根本不同的事情,只要你知道你正在寻找什么类型的信息,你应该能够选择正确的信息

如果您还没有,Kentico 7的API参考可能会有所帮助:https://devnet.kentico.com/docs/7_0/kenticocms_api.zip