[ASP.NET] 寫入檔案前檢查檔名及路徑是否有非法字元

寫入檔案前檢查檔名及路徑是否有非法字元

Asp.Net 寫入檔案前檢查檔名及路徑是否有非法字元

自己在寫的小工具正好需要下載網路的資源,儲存在本地目錄下,期間遇到了幾個問題

  1. 不合法的檔案名稱字元 *,處理起來好麻煩,乾脆改成直接存UrlEncode好了!
  2. UrlEncode後的檔案名稱太長,而且可讀性又糟糕,只好回頭處理非法字元

偶然發現微軟早就有提供類似的方法可以使用

Path.GetInvalidFileNameChars
Path.GetInvalidPathChars

這兩個方法都會返回一個 Char[],代表在這個作業系統內的非法字元,這樣使用方式就容易了,間單的迴圈替換就好

var invalidFileNameChars = Path.GetInvalidFileNameChars();
var htmlDecode = Uri.UnescapeDataString(name);
foreach (var nameChar in invalidFileNameChars)
{
    htmlDecode = htmlDecode.Replace(nameChar, '_');
}


Path.GetInvalidFileNameChars

Path.GetInvalidPathChars