如果文件名中有空格,则以下代码无法正常工作。 Uri.AbsolutePath转义字符串,导致磁盘上的映射路径也包括不必要的转义字符:
var uri = new Uri("http://localhost/my file.txt");
var pathOnDisk = HttpContext.Current.Server.MapPath(uri.AbsolutePath);
// Resulting incorrectly in "C:\MyWebsite\my%20file.txt"
没有乱糟糟的,并且使用官方解决方案而不是string.Replace,如何从uri获取未转义的路径,或者在不使用转义字符的情况下将路径映射到磁盘?
答案 0 :(得分:0)
只需解码它:
var uri = new Uri("http://localhost/my file.txt");
var pathOnDisk = HttpContext.Current.Server.MapPath(uri.AbsolutePath);
var decoded = HttpContext.Current.Server.UrlDecode(pathOnDisk);