2011-06-22 160 views
9

我想將此物理路徑"C:\bla\bla\Content\Upload\image.jpg"轉換爲像"/Content/Upload/image.jpg"這樣的服務器路徑。如何獲取物理路徑的服務器路徑?

我該怎麼做?

+0

哪裏?在客戶端還是服務器端? – jsalonen

+0

@jsalonen - 服務器端 – Freshblood

+0

[ASP.NET絕對路徑回到web相對路徑]可能的重複(http://stackoverflow.com/questions/3164/asp-net-absolute-path-back-to-web-相對路徑) –

回答

11

你可以使用類似的東西:

public static class Extensions  { 
     public static string RelativePath(this HttpServerUtility utility, string path, HttpRequest context) 
     { 
      return path.Replace(context.ServerVariables["APPL_PHYSICAL_PATH"], "/").Replace(@"\", "/"); 
     } 
    } 

和你打電話

Server.RelativePath(path, Request); 
+0

這不是OP要求的相反嗎? – GvS

+0

對不起,我重寫了 –

+2

的回覆謝謝,它很好的解決方案,但我更喜歡使用HttpServerUtilityBase代替HttpServerUtility,而不是HttpRequestBase而不是HttpRequestBase。也運作良好。 –

2

,你可以做以下,以獲得相對路徑。

String filePath = @"C:\bla\bla\Content\Upload\image.jpg"; 

String serverPath = Request.PhysicalPath; 
String relativePath = filePath.Substring(serverPath.Length, filePath.Length - serverPath.Length);