2010-09-08 174 views
4

我想確保給定的文件名是有效的,即使這意味着替換或刪除某些字符。目前,我正在這樣做:如何確保文件路徑有效?

Path.GetInvalidFileNameChars().ToList().ForEach (x => path.Replace (x, '-')); 

但據我所知,this is not guaranteed to yield a valid filename。有沒有更好的方法比上面執行預檢查然後實際嘗試打開文件?

編輯:點在上面的代碼中的bug;)

次要另外:我寧願保持文件名儘可能地易讀,所以使用某種BASE64應避免。

回答

3

過去我們使用過的一種方法是用某些特殊字符(例如連字符)替換不在某些特定樂隊(字母數字和連字符/下劃線)中的所有字符。這是假設大多數文件系統允許這個頻段。但是說一些未來的FS可能不允許說數字它並不安全。

+0

硬核,但好主意 - 這似乎是一個非常安全的方法。 – mafu 2010-09-08 12:06:16

+0

是的 - 它的安全方式。我們這樣做是因爲我們試圖通過存儲在臨時目錄中來保存上傳的文件名,並且當從Mac機上傳文件時遇到了問題。當然,現在我們使用生成的文件名存儲在文件存儲中,實際名稱存儲在數據庫中。 – VinayC 2010-09-08 12:24:03

相關問題