asp.net 上傳或下載當檔案名稱包含有特殊字元”#”的處理

來源:互聯網
上載者:User

如類似以下的代碼: 複製代碼 代碼如下: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對應檔案的絕對路徑

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.