2010-09-08 2 views
4

Я хотел бы убедиться, что данное имя файла действительно, даже если оно означает замену или удаление некоторых символов. В настоящее время я делаю это:Как обеспечить правильность пути к файлу?

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

Но, насколько я могу судить, this is not guaranteed to yield a valid filename. Есть ли лучший способ, чем выполнение выше предварительной проверки, а затем попытка try-catch для открытия файла?

Edit: пятно ошибка в коде выше;)

Незначительное дополнение: Я бы предпочел, чтобы сохранить имя файла как для чтения, насколько это возможно, так что с помощью какой-то BASE64 следует избегать.

ответ

3

Один из способов, которым мы использовали в прошлом, - это заменить все символы, которые не находятся в какой-либо определенной полосе (альфа-цифра и дефис/подчеркивания), с некоторым специальным символом, таким как дефис. Предполагается, что большинство файловых систем допускают эту группу. Но небезопасно говорить о некоторых будущих FS, которые, возможно, не позволяют говорить номера.

+0

Hardcore, но хорошая идея - это, кажется, очень безопасный способ. – mafu

+0

Да - его безопасный путь. Мы пошли так, потому что мы пытались сохранить имя загруженного файла, сохраняя в каталоге temp, и мы столкнулись с проблемой при загрузке файла с компьютера Mac. Конечно, теперь мы используем сгенерированные имена файлов для хранения в хранилище файлов, а фактическое имя хранится в БД. – VinayC

Смежные вопросы