Asp.Net 寫入檔案前檢查檔名及路徑是否有非法字元
自己在寫的小工具正好需要下載網路的資源,儲存在本地目錄下,期間遇到了幾個問題
- 不合法的檔案名稱字元 *,處理起來好麻煩,乾脆改成直接存UrlEncode好了!
- 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
Asp.Net 寫入檔案前檢查檔名及路徑是否有非法字元
自己在寫的小工具正好需要下載網路的資源,儲存在本地目錄下,期間遇到了幾個問題
偶然發現微軟早就有提供類似的方法可以使用
這兩個方法都會返回一個 Char[],代表在這個作業系統內的非法字元,這樣使用方式就容易了,間單的迴圈替換就好
var invalidFileNameChars = Path.GetInvalidFileNameChars(); var htmlDecode = Uri.UnescapeDataString(name); foreach (var nameChar in invalidFileNameChars) { htmlDecode = htmlDecode.Replace(nameChar, '_'); }
Path.GetInvalidFileNameChars
Path.GetInvalidPathChars