Umbraco получает медиа от URL - PullRequest
1 голос
/ 05 июля 2011

Я хочу защитить свои медиа с помощью genericHandler.ashx. У меня есть правило перезаписи / media в /handlers/my-handler.ashx?media-url=xxx.jpg Но я не могу найти функцию в umbraco api для получения ID узла из URL.

В данный момент я использую этот 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 голосов
/ 06 июля 2011

Если у вас есть перенаправление, настроенное для сопоставления чего-либо из / media с /handlers/my-handler.ashx, тогда исходный запрос URL будет в формате /media/ndommediaID‹/ enjfileName broadcast. averageextension} , Идентификатор носителя - это имя папки в каталоге / media на диске. Когда вы получаете входящий запрос, просто подпишите все подряд после «/ media /» и перед следующим »/".

НТН,

Benjamin

0 голосов
/ 06 июля 2011

Я думаю, что если вы знаете правильный формат URL-адреса, вы можете получить идентификатор медиа, используя некоторое регулярное выражение или разделив URL-адрес.

...