Umbraco从网址获取媒体

时间:2011-07-05 13:03:43

标签: c# url media umbraco

我想通过genericHandler.ashx保护我的媒体。我有一个重写规则/媒体到/handlers/my-handler.ashx?media-url=xxx.jpg但我找不到umbraco api中的函数来从url获取nodeId。

目前我使用这个SQL查询:

public static Int32 GetNodeIdFromUrl(String url)
{
        SqlParameter[] sqParams = { new SqlParameter("@url", url) };
        string sql = "select contentNodeId from cmsPropertyData where dataNvarchar =     @url";
        int id = -1;
        try
        {

           id = (int)SqlHelper.ExecuteScalar(umbraco.GlobalSettings.DbDSN,CommandType.Text,sql,sqParams);
        }
        catch (Exception ex)
        {
            umbraco.BusinessLogic.Log.Add(
                umbraco.BusinessLogic.LogTypes.Error, 
                new umbraco.BusinessLogic.User(0), 0,
                "Error from download security handler ->" + ex.Message.ToString());
        }

        return id;
    }

受到http://our.umbraco.org/forum/developers/api-questions/4284-getting-media-Id-from-path

的启发

你知道任何umbraco api功能吗?

2 个答案:

答案 0 :(得分:0)

我认为如果你知道网址的正确格式,你可以通过使用一些正则表达式或拆分网址来获取媒体ID。

答案 1 :(得分:-1)

如果您设置了重定向以将任何内容从/ media映射到/handlers/my-handler.ashx,则原始URL请求的格式为/media/{mediaID}/{fileName}.{extension} 。 介质ID是磁盘上/ media目录中文件夹的名称。当您收到传入请求时,只需在“/ media /”之后和下一个“/".

之前对所有内容进行SubString

HTH,

本杰明