2010-02-01 54 views
7

Tôi đã thấy rất nhiều hướng dẫn về cách giải quyết url tương đối thành đường dẫn tuyệt đối, nhưng tôi muốn làm ngược lại: giải quyết tệp hệ thống tuyệt đối thành url tương đối.Đường dẫn tệp tuyệt đối đến URL tương đối

Có cách nào hack-miễn phí tốt đẹp để biến một filepath như c:\my_website_root\images\picture_a.jpg vào images/picture_a.jpg

Tôi đã có một cái nhìn tại Uri.MakeRelative() nhưng tôi không nghĩ rằng nó sẽ được sử dụng trong trường hợp này.

Edit: Tôi đã thực hiện nó như thế này, vẫn có vẻ hacky (đặc biệt là dòng # 2)

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

Trả lời

1

Trong IIS, thiết lập một thư mục ảo images và điểm nó đến c:\my_website_root\images\.

Nếu trang web của bạn đã chuyển hướng đến c:\my_website_root\, bạn không cần phải làm gì cả.

0

Nếu bạn cần phải chuyển đổi tất cả các url tương đối so với các url tuyệt đối sử dụng fucntion này:

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

Một số lời giải thích có thể đi dọc theo con đường để cải thiện câu trả lời này. –

Các vấn đề liên quan