Абсолютный путь к файлу к относительному URL - PullRequest
7 голосов
/ 01 февраля 2010

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

Есть ли хороший способ без взлома превратить путь к файлу, как c:\my_website_root\images\picture_a.jpg в images/picture_a.jpg

Я посмотрел на Uri.MakeRelative(), но я не думаю, что он будет полезен в этом случае.

Редактировать: я реализовал это так, все еще кажется хакерским (особенно строка № 2)

var urlPath = new Uri(@"c:\mywebfolder\images\picture1.jpg");
var urlRoot = new Uri(Server.MapPath("~")+"/");
string relative = urlRoot.MakeRelativeUri(urlPath).ToString();

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

В IIS настройте виртуальный каталог images и укажите его c:\my_website_root\images\.

Если ваш сайт уже перенаправляет на c:\my_website_root\, вам не нужно ничего делать.

1 голос
/ 01 февраля 2010
0 голосов
/ 20 февраля 2014

Если вам нужно преобразовать все относительные 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
...