国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net 上傳或下載當文件名包含有特殊字符"#"的處理

2024-07-10 12:42:28
字體:
來源:轉載
供稿:網友
如類似以下的代碼:
代碼如下:
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對應文件的絕對路徑
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰原市| 顺义区| 巩留县| 南开区| 五华县| 弥勒县| 五莲县| 大余县| 星子县| 离岛区| 宁国市| 咸宁市| 钟祥市| 晴隆县| 洮南市| 彩票| 龙川县| 仙桃市| 南川市| 福鼎市| 南投市| 潞城市| 且末县| 施秉县| 东乌珠穆沁旗| 南昌县| 泾川县| 澄城县| 灵璧县| 马尔康县| 高要市| 台北市| 巩留县| 和龙市| 文化| 元阳县| 如东县| 西乌珠穆沁旗| 平舆县| 延寿县| 礼泉县|