【问题标题】:How to get server path of physical path ?如何获取物理路径的服务器路径?
【发布时间】:2011-09-20 03:45:54
【问题描述】:

我想将此物理路径"C:\bla\bla\Content\Upload\image.jpg" 转换为像"/Content/Upload/image.jpg" 这样的服务器路径。

我该怎么做?

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 path relative-path virtual-path


【解决方案1】:

你可以使用类似的东西:

 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); 

【讨论】:

  • 这不是 OP 要求的相反吗?
  • 哦对不起,我重写了回复
  • 谢谢,它很好的解决方案,但我更喜欢使用 HttpServerUtilityBase 而不是 HttpServerUtility abnd HttpRequestBase 而不是 HttpRequestBase。工作也很好。
  • +1 即使我认为在辅助方法中至少使用一个属性或方法的类中添加扩展并不是一个好主意。在这种情况下,RelativePath 可能位于像 PathResolver 这样的辅助类中更好的位置。你怎么看?
  • @Samuel 是的,这只是一个快速示例,但实际上您可以创建一个符合您需求的帮助程序类,就像您所说的 PathResolver 一样。
【解决方案2】:

您可以执行以下操作来获取相对路径。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    相关资源
    最近更新 更多