1

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

网址示例

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

当我这样做时,Server.MapPath()在这个 URL 上,我收到一个错误"Illegal characters in path."

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

4

4 回答 4

0

Windows 中的文件夹名称中不允许出现问号。您当前形式的要求是不可能实现的,也没有“修复”。您需要重新考虑如何将 URL 映射到文件夹和文件名。

于 2015-04-08T08:30:41.087 回答
0

你可以使用类似的东西:

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

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

它会起作用的。我建议您为此功能编写一些单元测试。

于 2015-04-08T07:04:06.887 回答
0

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

于 2015-04-08T07:07:22.390 回答
-1

您需要@在字符串之前使用符号。像下面

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

参考链接

于 2015-04-08T07:03:19.240 回答