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

In Kentico 7 I need to get attachment information from the attachment URL

当 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 中附件的信息?

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

  • 如果您使用的是媒体库中的文件,您应该尝试使用 MediaFileInfoProvider.GetMediaFileInfo(Guid, string),它采用文件的 Guid 和站点代码名称。这将 return 你 MediaFileInfo class。您可以在 Kentico 7 的 CMS.DataEngine 程序集中找到它。对于来自媒体库的文件,我希望看到呈现 URL 之类的 /SampleSite/media/cats/nohandskitten.aspx

  • 如果您不使用媒体库中的图像,而是直接插入到内容中,那么可以 - 这是一个附件。与其使用 AttachmentHistoryInfoProvider,不如使用 AttachmentInfoProvider。使用文件的 Guid 和站点代码名称调用 AttachmentInfoProvider.GetAttachmentInfo(Guid, string) 将 return AttachmentInfoObject。我相信如果您启用了对象版本控制,AttachmentHistoryInfoProvider 只会给您 return 东西。对于来自附件的文件,我希望看到 URL,例如 /getattachment/75408145-0995-45dc-943a-d27296a45327/nohandskitten.jpg.aspx

这些 InfoProvider 做的事情完全不同,只要您知道要查找的信息类型,就应该能够选择正确的信息提供者

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