asp.net 上传或下载当文件名包含有特殊字符"#"的处理
发布时间:2020-12-15 20:44:07 所属栏目:asp.Net 来源:网络整理
导读:如类似以下的代码: 复制代码 代码如下: Uri uri = new Uri(targetUrl);//targetUrl对应文件的绝对路径 System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "PUT"; request.Credentials = System.Net.CredentialC
如类似以下的代码: 复制代码 代码如下: Uri uri = new Uri(targetUrl);//targetUrl对应文件的绝对路径 System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "PUT"; request.Credentials = System.Net.CredentialCache.DefaultCredentials; request.ContentLength = stream.Length; 文件名为:fr#32%.xls (excel附件) 上传到服务器上,发现变成fr.xls了,文件名不对,所以就造成下载不了。 原因在于:一些 URI 包括段标识符或查询。段标识符是 URI 中跟在数字符号 (#) 后的任何文本,存储在 Fragment 属性中。 查询信息是 URI 中跟在问号 (?) 后的任何文本,存储在 Query 属性中。也就是说,Uri类会对文件路径#号后面的内容进行拆分存放。 而且,Uri中的相关属性也只读(ReadOnly)的,那么就只能通过其它路径来修改了。 解决方法: UriBuilder 类,为统一资源标识符 (URI) 提供自定义构造函数,并修改 Uri 类的 URI。跟Uri 的功能一样,但它的相关属性可以进行设置。 修改后的代码如下: 复制代码 代码如下: Uri uri = WebHelper.ProcessSpecialCharacters(targetUrl);//targetUrl对应文件的绝对路径 System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "PUT"; request.Credentials = System.Net.CredentialCache.DefaultCredentials; request.ContentLength = stream.Length; /// <summary> /// 当上传或下载的文件名包含有特殊字符"#"时,需要执行以下的函数进行处理 /// </summary> /// <param name="Url"></param> /// <returns></returns> private static Uri ProcessSpecialCharacters(string Url) { Uri uriTarget = new Uri(Url); if (!Url.Contains("#")) { return uriTarget; } UriBuilder msPage = new UriBuilder(); msPage.Host = uriTarget.Host; msPage.Scheme = uriTarget.Scheme; msPage.Port = uriTarget.Port; msPage.Path = uriTarget.LocalPath + uriTarget.Fragment; msPage.Fragment = uriTarget.Fragment; Uri uri = msPage.Uri; return uri; } Uri uri = new Uri(targetUrl);//targetUrl对应文件的绝对路径 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何调试w3wp clr.dll错误
- asp.net-mvc – 为什么MVC控制器必须在其类名上具有尾随的’
- asp.net-mvc – RouteCollection.Ignore和RouteCollection.
- asp.net – 我使用什么Active Directory字段来唯一标识用户
- asp.net-mvc – 什么是实例化和配置DbContext在MVC中的最佳
- asp.net-mvc – RazorPDF将pdf文件保存到MVC4中的服务器目录
- .net – 具有流畅验证的Ninjects
- ASP.NET Web站点项目中的“复制本地”等效参考
- 最接近Asp.net mvc3的Java MVC框架?
- ASP.NET AJAX AsyncFileUpload UploadedComplete不会触发
推荐文章
站长推荐
热点阅读