unbraco - GetMedia没有返回正确的url

本文关键字:url 返回 GetMedia unbraco | 更新日期: 2023-09-27 17:50:30

我试图重定向到媒体url,但使用代码blow,结果是完整的url由媒体的大小连接。

例如,url返回/media/123/example。pdfpdf4000
XPathNodeIterator xName = umbraco.library.GetMedia(Convert.ToInt32(pdfid), false);
string url = xName.Current.Value;
Response.Redirect("~/"+ url);

发生了什么事?

unbraco - GetMedia没有返回正确的url

我只是在寻找如何做到这一点,和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迭代器更好。

这里有一个解决方案,这里也有。但是,实际上您可以创建如下方法来解决这个问题:

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;
}

要获取媒体文件URL,只需输入

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