Абсолютный путь к файлу с относительным URL
Я видел много уроков по разрешению относительного 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 ответа
Это должно помочь вам, Абсолютный путь обратно к веб-относительному пути
В IIS настройте виртуальный каталог images
и указать на это c:\my_website_root\images\
,
Если ваш сайт уже направлен на c:\my_website_root\
Вам не нужно ничего делать.
Если вам нужно преобразовать все относительные 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