我知道很多次都会问这个问题,但我找不到我需要的东西。
我想获取服务器路径并添加图像路径。我做到了
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) + "/";
这是正确的方法吗?或者有更好的方法吗?
答案 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属性。