Querystring中的问号与Server.MapPath返回错误

时间:2015-04-08 06:55:41

标签: c# asp.net asp.net-mvc query-string server.mappath

我正在开发一个Web应用程序。在这里,我将附件/上传存储在服务器物理目录中。上传的父文件夹可能包含特殊字符,例如'?'

网址示例

"~/ChapterFiles/Capgeminisdfsdf_BE CSE ?_CoverPic/CoverPic.jpg"

当我在此网址上Server.MapPath()时,我收到错误"Illegal characters in path."

无法删除文件夹名称中的问号,因为它是要求的一部分。请提出解决方案,我需要紧急解决。

4 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

String absoluteDir = Server.MapPath("~");
String myRelativePath = "~/ChapterFiles/Capgeminisdfsdf_BE CSE ?  _CoverPic/CoverPic.jpg".Replace("/","\\");

String absolutePath = Path.Combine(absoluteDir,myRelativePath);

它会起作用。我建议你为这个函数写一些单元测试。

答案 1 :(得分:0)

使用HttpServerUtility.UrlEncodeUrlDecode对字符串进行编码/解码。

答案 2 :(得分:0)

Question marks are not allowed in folder names in Windows。您对其当前形式的要求是不可能实现的,并且没有“修复”。您需要重新考虑如何将URL映射到文件夹和文件名。

答案 3 :(得分:-1)

您需要在字符串前使用@符号。如下所示

@"~/ChapterFiles/Capgeminisdfsdf_BE CSE ?_CoverPic/CoverPic.jpg"

Reference link