我们在我们的网络服务器(人们上传它们)上存储一堆奇怪的文件名称,它们具有空格,&符号等各种字符.当我们生成链接到这些文档时,我们需要转义它们,以便服务器可以查找文件其原始名称在数据库中.但是,所有内置.NET转义函数都不会正常运行.
拿文件Hello#There.docx:
UrlEncode将正确处理:
HttpUtility.UrlEncode("Hello#There"); "Hello%23There"
但是,UrlEncode不会正确处理Hello There.docx:
HttpUtility.UrlEncode("Hello There.docx"); "Hello+There.docx"
该符号仅对URL参数有效,而不适用于文档名称.有趣的是,这实际上可以在Visual Studio测试Web服务器上工作,但不在IIS上.
UrlPathEncode功能适用于空格:
HttpUtility.UrlPathEncode("Hello There.docx"); "Hello%20There.docx"
但是,它不会转义其他字符,如#字符:
HttpUtility.UrlPathEncode("Hello#There.docx"); "Hello#There.docx"
此链接无效,因为#被解释为URL哈希,甚至不会访问服务器.
是否有一个.NET实用程序方法来转义文档名称中的所有非字母数字字符,或者我必须自己编写?
解决方法
看看
Uri.EscapeDataString Method:
Uri.EscapeDataString("Hello There.docx") // "Hello%20There.docx" Uri.EscapeDataString("Hello#There.docx") // "Hello%23There.docx"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。