【问题标题】:Absolute file path to relative URL [duplicate]相对 URL 的绝对文件路径 [重复]
【发布时间】:2011-01-11 16:15:13
【问题描述】:

我看过很多关于将相对 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();

【问题讨论】:

    标签: c# file resolveurl


    【解决方案1】:

    在 IIS 中,设置一个虚拟目录images 并将其指向c:\my_website_root\images\

    如果您的网站已经指向c:\my_website_root\,您无需执行任何操作。

    【讨论】:

      【解决方案2】:

      如果您需要将所有相对网址转换为绝对网址,请使用此功能:

      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
      

      【讨论】:

      • 一些解释可能有助于改进这个答案。
      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 2012-10-27
      • 2012-02-03
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多