\ in c中的path.combine

时间:2016-05-16 08:09:20

标签: c# path

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

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

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) + "/";

这是正确的方法吗?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

这是因为Path.Combine旨在结合典型的目录路径,例如:

C:\MyDir\MyDir2\MyMyDir

分隔符为\,而不是分隔符为/的网址:

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

如果要合并网址路径,可以改为使用Uri

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

答案 1 :(得分:0)

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

  

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

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

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