相对URL的绝对文件路径
问题描述:
我已经看到很多关于将相对url解析为绝对路径的教程,但我想做相反的事情:将系统绝对文件路径解析为相对url。相对URL的绝对文件路径
是否有一个很好的免费下锅的办法把像c:\my_website_root\images\picture_a.jpg
文件路径为images/picture_a.jpg
我看了一下Uri.MakeRelative()
,但我不认为这将是在这种情况下使用的。
编辑:我已经实现了它这个样子,似乎仍然哈克(ESP生产线#2)
var urlPath = new Uri(@"c:\mywebfolder\images\picture1.jpg");
var urlRoot = new Uri(Server.MapPath("~")+"/");
string relative = urlRoot.MakeRelativeUri(urlPath).ToString();
答
在IIS,设置虚拟目录images
和点它到c:\my_website_root\images\
。
如果您的网站已经指向c:\my_website_root\
,则无需执行任何操作。
答
如果需要对所有的相对URL转换为绝对URL使用温控功能:
Private Function ConvertALLrelativeLinksToAbsoluteUri(ByVal html As String, ByVal PageURL As String)
Dim result As String = Nothing
' Getting all Href
Dim opt As New RegexOptions
Dim XpHref As New Regex("(href="".*?"")", RegexOptions.IgnoreCase)
Dim i As Integer
Dim NewSTR As String = html
For i = 0 To XpHref.Matches(html).Count - 1
Application.DoEvents()
Dim Oldurl As String = Nothing
Dim OldHREF As String = Nothing
Dim MainURL As New Uri(PageURL)
OldHREF = XpHref.Matches(html).Item(i).Value
Oldurl = OldHREF.Replace("href=", "").Replace("HREF=", "").Replace("""", "")
Dim NEWURL As New Uri(MainURL, Oldurl)
Dim NewHREF As String = "href=""" & NEWURL.AbsoluteUri & """"
NewSTR = NewSTR.Replace(OldHREF, NewHREF)
Next
html = NewSTR
Dim XpSRC As New Regex("(src="".*?"")", RegexOptions.IgnoreCase)
For i = 0 To XpSRC.Matches(html).Count - 1
Application.DoEvents()
Dim Oldurl As String = Nothing
Dim OldHREF As String = Nothing
Dim MainURL As New Uri(PageURL)
OldHREF = XpSRC.Matches(html).Item(i).Value
Oldurl = OldHREF.Replace("src=", "").Replace("src=", "").Replace("""", "")
Dim NEWURL As New Uri(MainURL, Oldurl)
Dim NewHREF As String = "src=""" & NEWURL.AbsoluteUri & """"
NewSTR = NewSTR.Replace(OldHREF, NewHREF)
Next
Return NewSTR
End Function
一些可能的解释一路上去改善这个答案。 – 2014-03-11 19:49:03