在 C# 中的 path.combine [重复]

Posted

技术标签:

【中文标题】\ 在 C# 中的 path.combine [重复]【英文标题】:\ in path.combine in c# [duplicate] 【发布时间】:2016-09-11 23:22:09 【问题描述】:

我知道这个问题被问了很多次,但我找不到我需要的东西。

我想获取服务器路径并为其添加图像路径。我做到了

string mypath = Request.Url.GetLeftPart(UriPartial.Authority);
string uploadPath = Path.Combine(mypath, "Upload/Images/");
Response.Write(uploadPath);

这个打印http://localhost\Upload/Images/,为什么路径中间有个\

我通过像这样将/ 添加到mypath 来修复它

string mypath = Request.Url.GetLeftPart(UriPartial.Authority) + "/";

这是正确的方法吗?还是有更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

您应该将Uri 类用于URL,因为Path.Combine 用于目录路径操作。

提供统一资源标识符 (URI) 的对象表示,并可轻松访问 URI 的各个部分。

Uri baseUri = new Uri(mypath);
Uri myUri = new Uri(baseUri, "Upload/Images/");
string uploadPath = myUri.AbsoluteUri;

而要获取URL,可以使用AbsoluteUri属性。

【讨论】:

【参考方案2】:

这是因为Path.Combine 是为了结合典型的目录路径,比如:

C:\MyDir\MyDir2\MyMyDir

分隔符是\,而不是分隔符是/的URL:

http://***.com/questions/37249357/in-path-combine-in-c-sharp/37249373#37249373

如果你想合并 URL 路径,你可以使用 Uri 代替:

Uri baseUri = new Uri(mypath);
Uri myUri = new Uri(baseUri, "Upload/Images/");

【讨论】:

以上是关于 在 C# 中的 path.combine [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中加入两条路径?

在 C# 中,如何一次组合文件路径的两个以上部分?

C#如何在指定目录下创建文件

c#: 将 mp3 文件覆盖到另一个文件

Path.Combine 如何与两个以上的参数一起使用?

Path.Combine 和点符号