最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2010年03月10日 22:57:30   作者:  
在上傳或下載文件時,當文件名包含有"#"特殊字符時,上傳以后的文件會被改名字,造成下載也下載不了。
如類似以下的代碼:
復制代碼 代碼如下:

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附件)
上傳到服務器上,發(fā)現(xiàn)變成fr.xls了,文件名不對,所以就造成下載不了。
原因在于:一些 URI 包括段標識符或查詢。段標識符是 URI 中跟在數(shù)字符號 (#) 后的任何文本,存儲在 Fragment 屬性中。
查詢信息是 URI 中跟在問號 (?) 后的任何文本,存儲在 Query 屬性中。也就是說,Uri類會對文件路徑#號后面的內(nèi)容進行拆分存放。
而且,Uri中的相關(guān)屬性也只讀(ReadOnly)的,那么就只能通過其它路徑來修改了。
解決方法:
UriBuilder 類,為統(tǒng)一資源標識符 (URI) 提供自定義構(gòu)造函數(shù),并修改 Uri 類的 URI。跟Uri 的功能一樣,但它的相關(guān)屬性可以進行設(shè)置。
修改后的代碼如下:
復制代碼 代碼如下:

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>
/// 當上傳或下載的文件名包含有特殊字符"#"時,需要執(zhí)行以下的函數(shù)進行處理
/// </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對應文件的絕對路徑

相關(guān)文章

最新評論

文山县| 满洲里市| 家居| 香河县| 临朐县| 鄂托克前旗| 西乌珠穆沁旗| 绍兴市| 凤凰县| 长武县| 长治市| 台中市| 贺兰县| 揭东县| 双辽市| 伊吾县| 永善县| 从化市| 密山市| 岫岩| 湟源县| 子洲县| 望谟县| 南充市| 竹溪县| 商洛市| 柳州市| 原阳县| 安西县| 仁怀市| 津南区| 南阳市| 苍溪县| 建德市| 兴宁市| 千阳县| 辰溪县| 会同县| 雷山县| 乐都县| 龙胜|