How To Display An Image By Ektron Content ID

  • Updated

This article describes how a developer can read content from Ektron CMS and load the image content to a page.

The most direct way to manage an image as content and display it on a page would be to:

  • Upload image as a document in DMS.
  • Use an out of the box server control as shown here.   


For sample on ContentBlock you can go here which uses id.  If you are using DMS and want some code there are some bits below you may be able to extract with the help of above documentation. 

<%@ Page Language="C#" %>

<%@ Import Namespace="Ektron.Cms.Min" %>
<%@ Import Namespace="Ektron.Cms.Framework.UI.Controls.EktronUI" %>

<!DOCTYPE html>

<script runat="server">

    public static long GetFileSize(string filename)
    {
        System.IO.FileInfo fi = new System.IO.FileInfo(filename);
        return fi.Length;
    }

    public string getAssetPathWithFileName(long contentID, Ektron.Cms.Content.ContentAssetData assetData)
    {
        Ektron.Cms.API.Content.Content contentApi = new Ektron.Cms.API.Content.Content();
        contentApi.EkContentRef.RequestInformation.CallerId = Ektron.Cms.Common.EkConstants.InternalAdmin;
        contentApi.EkContentRef.RequestInformation.UserId = Ektron.Cms.Common.EkConstants.InternalAdmin;

        Ektron.Cms.Content.EkContent ekContent = contentApi.EkContentRef;

        string AssetID = ekContent.GetAssetIDForContentID(contentID, 1033);
        string AssetFileName = AssetID + "." + assetData.AssetData.FileExtension;
        string FolderIDPath = ekContent.GetFolderIdPath(assetData.FolderId).TrimStart('/').TrimEnd('/');

        return Server.MapPath(contentApi.SitePath + "/assets/0/" + FolderIDPath + "/" + AssetFileName);
    }

    protected void uxSubmit_Click(object sender, EventArgs e)
    {

        try
        {
            long contentID = long.Parse(uxContentId.Text);
            bool returnMetadata = uxReturnMetadata.Checked;

            Ektron.Cms.Framework.Content.AssetManager assetManager = new Ektron.Cms.Framework.Content.AssetManager();
            Ektron.Cms.Content.ContentAssetData assetData = assetManager.GetItem(contentID, returnMetadata);

            if (assetData != null)
            {                                                                           
                MessageUtilities.UpdateMessage(uxMessage, "Details for  Content Id " + assetData.Id.ToString() + " are below", Message.DisplayModes.Success);
                uxTitle.Text = "Title : " + assetData.Title;
                uxLanguageID.Text = "Language ID : " + assetData.LanguageId;
                uxContentType.Text = "Content Type : " + assetData.ContType;
                uxMetadata.Text += "Metadata : ";
                uxNumBytes.Text = "The number of bytes is: " + GetFileSize(getAssetPathWithFileName(contentID, assetData));

                if (assetData.MetaData != null)
                {
                    foreach (Ektron.Cms.ContentMetaData cMeta in assetData.MetaData)
                    {
                        uxMetadata.Text += cMeta.Name + ":" + cMeta.Text + "; ";
                    }
                }
                else
                {
                    uxMetadata.Text += "null";
                }
            }
            else
            {
                MessageUtilities.UpdateMessage(uxMessage, "Either content with ID " + contentID + " does not exist or is not an Asset ", Message.DisplayModes.Error);
            }

            uxPageMultiView.SetActiveView(uxViewMessage);

        }
        catch (Exception ex)
        {
            MessageUtilities.UpdateMessage(uxMessage, ex.Message, Message.DisplayModes.Error);
            uxPageMultiView.SetActiveView(uxViewMessage);
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:MultiView ID="uxPageMultiView" runat="server" ActiveViewIndex="0">
                <asp:View ID="uxViewMessage" runat="server">
                    <div>
                        <ol class="formFields">
                            <li class="clearfix">
                                <ektronUI:Label ID="uxContentIdLabel" AssociatedControlID="uxContentId" CssClass="span-3 last" runat="server" Text="* Id:" />
                                <ektronUI:TextField ID="uxContentId" CssClass="span-6" runat="server" ValidationGroup="RegisterValidationGroup" Text="0" />
                            </li>

                            <li class="clearfix">
                                <asp:Label ID="uxReturnMetadataLabel" AssociatedControlID="uxReturnMetadata" CssClass="span-3 last" runat="server" Text="Return Metadata:" />
                                <ektronUI:Button ID="uxReturnMetadata" DisplayMode="Checkbox" Text="" CssClass="span-4" runat="server" ValidationGroup="RegisterValidationGroup" />
                            </li>

                            <li class="clearfix">
                                <ektronUI:Button ID="uxSubmit" runat="server" OnClick="uxSubmit_Click" Text="Get Item"></ektronUI:Button>
                                <ektronUI:Label ID="uxRequiredLabel" CssClass="span-3" runat="server" Text="* - Required" />
                            </li>
                        </ol>
                        <ol class="formFields">
                            <li class="clearfix">
                                <asp:Literal ID="uxTitle" runat="server"></asp:Literal>
                            </li>
                            <li class="clearfix">
                                <asp:Literal ID="uxLanguageID" runat="server"></asp:Literal>
                            </li>
                            <li class="clearfix">
                                <asp:Literal ID="uxContentType" runat="server"></asp:Literal>
                            </li>
                            <li class="clearfix">
                                <asp:Literal ID="uxMetadata" runat="server"></asp:Literal>
                            </li>
                            <li class="clearfix">
                                <asp:Literal ID="uxNumBytes" runat="server"></asp:Literal>
                            </li>
                        </ol>
                    </div>
                </asp:View>
            </asp:MultiView>
            <ektronUI:Message ID="uxMessage" runat="server"></ektronUI:Message>
        </div>
    </form>
</body>
</html>