检索媒体文件的外部URL

时间:2012-09-13 16:31:31

标签: c1-cms

我有一个带有属性" Image"的页面数据文件夹,它是对Composite C1后端中的Media文件的引用。

我现在想要在我的asp.net用户控件中检索数据,但是当我访问" Image"我的PageDataFolder类型的属性是一个具有以下格式的字符串:

  

mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d

我不确定如何从中获取外部图像网址。我可以使用API​​函数吗?

2 个答案:

答案 0 :(得分:3)

建立一个像

这样的网址

〜/媒体(的 {MediaKey}

示例:“〜/ media(mediaarchive:b5354eba-3f69-4885-9eba-74576dff372d)”

呈现C1页面后,它将替换为以下SEO友好网址:

/ media / {媒体档案中图片的路径}

示例:“/ media / 5611182f-6462-4b80-a051-3c3b9bb3276d / References / Screenshots / Olympiacos / 1_png”

请注意,您可以通过查询字符串指定图像resing / cropping选项。 http://docs.composite.net/Getting-started/Configuration/Resizing-Images

如果由于某种原因无法依赖C1页面呈现逻辑,您可以使用以下代码构建公共媒体网址:

protected string GetMediaUrl(string mediaPath)
{
    string[] parts = mediaPath.Split(new[] { ':' });

    string mediaStore = parts[0];
    Guid mediaId = new Guid(parts[1]);

    string mediaUrl = MediaUrls.BuildUrl(new MediaUrlData { MediaStore = mediaStore, MediaId = mediaId, QueryParameters = new NameValueCollection() },
                                         UrlKind.Public);

    // Temporary fix, allows media player to receive a nice url with an extension
    return mediaUrl.Replace("_jpg", ".jpg").Replace("_mov", ".mov").Replace("_m4v", ".m4v").Replace("_swf", ".swf");
}

答案 1 :(得分:1)

我找到了一种方法,但它并不是最短的方式:

MediaUrlHelper.GetUrl(MediaUrlHelper.GetFileFromQueryString(new NameValueCollection { {"id", myItem.Image} }))

我仍然希望有人提出更好的解决方案,我很乐意将其作为答案。