【发布时间】:2013-07-08 17:02:42
【问题描述】:
如何从文件路径获取文件名,文件可以从不同的 OSX 或 windows 上传。
正在努力实现的目标和挑战如下:
- 我的目标是清理文件名,如果它有任何非法字符。
示例:OSX 允许
\和一些 Windows 文件系统不允许的其他字符。 alg 将\替换为_。 - 有时某些浏览器 (IE) 会将整个路径作为文件名发送到我的代码。因此,如果我在 Windows 中从网络上传共享文件,IE 会将名称发送为
\\\\servername\\folder\\filenmae.txt
-- 我不能使用文件信息或路径,因为来自 OSX 的文件名可能包含非法字符,例如 |、>、<,并且因为如果 Mac OSX 中的文件名是 @987654328 @、fileinfo 或 path 给我“文件”作为文件名而不是全名。
-- 现在,如果文件名在路径中有 :\,我可以很容易地提取文件名使用
filename.Substring(filename.LastIndexOf(@"\") + 1)
-- 但我的问题在于共享文件,因为 Windows 中的共享文件完整路径模式可以是 OSX 中的文件名。
我怎样才能得到全名?
任何建议将不胜感激。
【问题讨论】:
-
您无法知道
\\a\b\c.txt是来自 Windows 的完整路径还是来自 *nix 的异常文件名。 -
在 OSX 中应用于文件名的规则是什么?
-
请谷歌!,我知道 :-)
-
@DineshB 当然我是在开玩笑说 OSX。 :) 这似乎很难。虽然你可以尝试一个小实验。如果您在 Windows 和 OSX 之间共享文件,是否会出现同样的问题(例如,如果您的 MAC 上有一个奇怪的文件名,您可以通过 Windows 访问它)吗?
-
好问题!如果您尝试复制它可能会给您一个错误