我正在尝试重定向到媒体网址,但是使用代码打击,会导致完整的网址与媒体的大小连接。
例如,url返回/media/123/example.pdfpdf4000
XPathNodeIterator xName = umbraco.library.GetMedia(Convert.ToInt32(pdfid), false);
string url = xName.Current.Value;
Response.Redirect("~/"+ url);
发生了什么事?
答案 0 :(得分: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迭代器更好。
答案 1 :(得分:2)
有solution explained here和here。但是,从本质上讲,您可以创建一个方法来解决问题:
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;
}
答案 2 :(得分:0)
要获取媒体文件网址,只需
即可new Media(mediaId).getProperty("umbracoFile").Value.ToString()