2

我正在尝试重定向到媒体 url,但使用代码攻击会导致完整的 url 由媒体的大小连接起来。

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

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

怎么了?

4

3 回答 3

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 迭代器更好。

于 2013-02-21T16:20:08.377 回答
2

There is a solution explained here and also here. But, in essence you can create a method as below to fix the issue:

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;
}
于 2013-01-06T09:59:39.123 回答
0

要获取媒体文件 URL,很简单

new Media(mediaId).getProperty("umbracoFile").Value.ToString()
于 2014-06-20T07:19:53.330 回答