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

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:26:15
字體:
來源:轉載
供稿:網友
如類似以下的代碼:

復制代碼 代碼如下:


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></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對應文件的絕對路徑

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东海县| 西安市| 健康| 高安市| 黄梅县| 崇明县| 西宁市| 隆林| 同仁县| 商都县| 申扎县| 宿迁市| 郸城县| 牙克石市| 营口市| 德兴市| 普兰店市| 文水县| 鄄城县| 紫金县| 广饶县| 张家口市| 碌曲县| 和林格尔县| 宕昌县| 兴业县| 伊宁市| 灵丘县| 崇文区| 天峻县| 会东县| 牟定县| 扶风县| 双柏县| 临沧市| 台中市| 肥东县| 安丘市| 东平县| 和平县| 南江县|