
上传或下载当文件名包含有特殊字符"#"的处理
发布日期:2021-07-19 12:29:44
浏览次数:8
分类:技术文章
本文共 1514 字,大约阅读时间需要 5 分钟。
在上传或下载文件时,当文件名包含有"#"特殊字符时,上传以后的文件会被改名字,造成下载也下载不了。
如类似以下的代码: 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对应文件的绝对路径转载地址:https://blog.csdn.net/jdsjlzx/article/details/9063941 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2023年08月26日 05时32分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
临期食品,是否只是个“过期“市场?
2019-03-07
电商SaaS不好做,有赞亏到了末路?
2019-03-07
钱袋宝屡次被罚,美团为何做不好金融?
2019-03-07
两轮电动车,走不出“Tesla“
2019-03-07
2021年将新推188部动画,爱优腾加上B站你选谁?
2019-03-07
豆神教育轻装上阵,搏命“大语文”下能否扭转24亿亏损的乾坤?
2019-03-07
快手推出“原片”对标字节“醒图”,百亿修图市场好进吗?
2019-03-07
哈啰是好单车,但哈啰出行是好生意吗?
2019-03-07
喜马拉雅的增量市场,AIOT能够承载多少空间?
2019-03-07
为了把pump文件还原进oracle数据库的一些步骤
2019-03-07
Idea配置mavne不生效
2019-03-07
nginx fastdfs 配置后 访问报404
2019-03-07
汇编语言
2019-03-07
java如何实现以数据流的形式下载压缩包到本地?
2019-03-07
汇编 第二章 寄存器(CPU工作原理)
2019-03-07
汇编 第四章 第一个汇编程序
2019-03-07
if判断(新增和编辑)使用模块。
2019-03-07
【解决】python cv2.imread为空
2019-03-07
Python Des加密与解密实现软件注册码、机器码
2019-03-07