2010-09-08 68 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

相关问题