在URI上使用Server.MapPath时处理转义空格

时间:2014-12-22 01:49:00

标签: asp.net

如果文件名中有空格,则以下代码无法正常工作。 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获取未转义的路径,或者在不使用转义字符的情况下将路径映射到磁盘?

1 个答案:

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