Umbraco从url获取媒体
本文关键字:媒体 获取 url Umbraco | 更新日期: 2023-09-27 18:01:04
我想用genericHandler.ashx保护我的媒体。我有一个重写规则/media到/handlers/my-handler.ashx?media url=xxx.jpg但是我在umbracoapi中找不到从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
你以前知道有什么umbracoapi函数可以做到这一点吗?
我认为如果你知道url的正确格式,你可以通过使用一些正则表达式或拆分url来获取媒体id。
如果您设置了重定向以将任何内容从/media映射到/handler/my-handler.ashx,则原始URL请求的格式为/media/{mediaID}/{fileName}。{扩展}。介质ID是磁盘/media目录中文件夹的名称。当您收到一个传入请求时,只需SubString"/media/"之后和下一个"/"之前的所有内容。
HTH,
Benjamin