绝对文件路径转相对URL

7
我看了很多关于将相对 URL 解析为绝对路径的教程,但我想做相反的事情:将系统绝对文件路径解析为相对 URL。
有没有一种不需要 hack 的好方法将文件路径如 c:\my_website_root\images\picture_a.jpg 转换成 images/picture_a.jpg?
我已经看过 Uri.MakeRelative(),但我认为在这种情况下它并没有用处。
编辑:我已经像这样实现了它,但仍然似乎有点 hacky(特别是第二行)。
var urlPath = new Uri(@"c:\mywebfolder\images\picture1.jpg");
var urlRoot = new Uri(Server.MapPath("~")+"/");
string relative = urlRoot.MakeRelativeUri(urlPath).ToString();
2个回答

1
在IIS中,设置一个虚拟目录images并将其指向c:\my_website_root\images\
如果您的网站已经指向c:\my_website_root\,则无需进行任何操作。

0
如果你需要将所有相对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

2
一些解释可能会大有裨益,以改善这个答案。 - Travis Griggs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接