1

我正在动态调整图像大小:

ImageJob i = new ImageJob(file, "~/eventimages/<guid>_<filename:A-Za-z0-9>.<ext>", 
    new ResizeSettings("width=200&height=133&format=jpg&crop=auto"));
i.Build();

我正在尝试将图像相对 URL 存储在数据库中。该i.FinalPath物业给了我:

C:\inetpub\wwwroot\Church\eventimages\56b640bff5ba43e8aa161fff775c5f97_scenery.jpg

如何仅获取图像文件名 - 解析它的最佳方法?

所需字符串:/eventimages/56b640bff5ba43e8aa161fff775c5f97_scenery.jpg

4

3 回答 3

2

只需使用正则表达式

Regex.Match

创建您的模式并提取所需的值

string input = "C:\\inetpub\\wwwroot\\Church\\eventimages\\56b640bff5ba43e8aa161fff775c5f97_scenery.jpg";
Match match = Regex.Match(input, @"^C:\\[A-Za-z0-9_]+\\[A-Za-z0-9_]+\\[A-Za-z0-9_]+\\([A-Za-z0-9_]+\\[A-Za-z0-9_]+\.jpg)$", RegexOptions.IgnoreCase);
if (match.Success)
{
    // Finally, we get the Group value and display it.
    string path = match.Groups[1].Value.Replace("\\", "/");
}
于 2012-05-22T03:51:50.907 回答
2

像下面的东西,

var sitePath = MapPath(@"~");
var relativePath= i.FinalPath.Replace(sitePath, "~");
于 2012-05-22T03:59:10.810 回答
0

这是我在实用程序方法中使用的内容:

Uri uri1 = new Uri(i.FinalPath);
Uri uri2 = new Uri(HttpContext.Current.Server.MapPath("/"));
Uri relativeUri = uri2.MakeRelativeUri(uri1); 

(从别人那里偷来的……不记得是谁了,但是谢谢)

于 2013-01-12T22:25:50.987 回答