2013-01-03 34 views
1

我試圖重定向到媒體網址,但使用代碼打擊,導致完整的url鏈接的媒體大小。Umbraco - GetMedia不會返回正確的網址

因此,例如URL返回/media/123/example.pdfpdf4000

XPathNodeIterator xName = umbraco.library.GetMedia(Convert.ToInt32(pdfid), false); 
string url = xName.Current.Value; 
Response.Redirect("~/"+ url); 

這是怎麼回事?

回答

1

有一個solution explained herehere。但是,在本質上,你可以如下創建一個方法來解決這個問題:

public string getImage(int ImageID) 
{ 
    XPathNodeIterator xn = umbraco.library.GetMedia(ImageID, false); 
    xn.MoveNext(); 

    XPathNodeIterator xn2 = xn.Current.Select("data[@alias='umbracoFile']"); 
    xn2.MoveNext(); 
    return xn2.Current.Value; 
} 
3

我只是在尋找如何做到這一點,和一把umbraco現在包括uQuery得到這樣的數據更容易,所以要回答你的問題你可以使用:

Media pdf = umbraco.uQuery.GetMedia(pdfId); 
Response.Redirect(pdf.GetProperty<string>("umbracoFile")); 

只是注意:如果它是一個形象的媒體項目(而不是文件),它會是更容易:

Media img = umbraco.uQuery.GetMedia(imgId); 
imgTag.ImageUrl = img.GetImageUrl(); 

不知道爲什麼uQuery不包括GetFileUrl()GetProperty<string>()似乎比自己使用xpath迭代器更好。

+0

值得注意的是(和煩人),'umbraco.uQuery.GetMedia'似乎返回'Media'數據模型的形式已過時。 – Alec

0

要獲取媒體文件的URL,它只是

new Media(mediaId).getProperty("umbracoFile").Value.ToString() 
+0

這不是'Media'的有效構造函數。 – Alec

+0

感謝您的「getProperty(」umbracoFile「)。Value.ToString()」部分。這對我有效。雖然我不確定構造函數 – codeshinobi