gpt4 book ai didi

asp.net 上传或下载当文件名包含有特殊字符"#"的处理

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 31 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章asp.net 上传或下载当文件名包含有特殊字符"#"的处理由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

如类似以下的代码:  。

复制代码代码如下

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 上传或下载当文件名包含有特殊字符"#"的处理的文章就讲到这里了,如果你想了解更多关于asp.net 上传或下载当文件名包含有特殊字符"#"的处理的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com