Escape имени файла файловой системы? C#

То, что вы сделали, создает ссылку на EntityFramework.SqlServer.dll. Это гарантирует, что эта сборка будет скопирована в папку bin проектов с использованием вашей сборки доступа к данным.

Вы можете сделать то же самое, добавив что-то вроде следующего в сборку доступа к данным:

Type _Hack = typeof(System.Data.Entity.SqlServer.SqlProviderServices)
7
задан 20 June 2009 в 05:27
поделиться

6 ответов

Используйте Path.GetInvalidFileNameChars или Path.GetInvalidPathChars , чтобы проверить наличие символов, которые нужно удалить.

http://msdn.microsoft.com/ en-us / library / system.io.path.getinvalidfilenamechars.aspx

3
ответ дан 6 December 2019 в 08:16
поделиться

Независимо от того, заменяете ли вы недопустимые символы или удаляете их, всегда будет возможность конфликтов. На вашем месте у меня был бы отдельный первичный ключ для пользователя (возможно, GUID) и я бы использовал его для имени каталога. Таким образом, вы можете использовать любые имена пользователей, не беспокоясь о недопустимых именах каталогов.

10
ответ дан 6 December 2019 в 08:16
поделиться

В зависимости от того, являются ли ваши символы ASCII / Unicode, вы можете использовать значения байтов / символов в качестве замены и использовать какой-либо символ для отметки этих замененных символов (например, подчеркивания), что даст вам что-то вроде _001_255_200ValidPart_095_253 . Обратите внимание, что вам также необходимо заменить символы маркировки ( _095 в примере, 95 - это код ASCII для подчеркивания).

6
ответ дан 6 December 2019 в 08:16
поделиться

Думаю, лучше всего будет создать словарь, который отображает недопустимые символы файловой системы в допустимую строку замены. Затем просканируйте строку на наличие недопустимых символов, заменяя их допустимыми строками по мере продвижения. Это позволит пользователю выбирать все, что он хочет, и даст вам возможность преобразовать это обратно в имя пользователя, если хотите.

2
ответ дан 6 December 2019 в 08:16
поделиться

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

Более надежным подходом будет создание каталога с использованием некоторого произвольного соглашения, а затем сохранение сопоставления между двумя . Это также обеспечивает поддержку для случая, когда ваш пользователь хочет иметь возможность изменить имя.

Подробнее читайте в вопросе № 663520 .

1
ответ дан 6 December 2019 в 08:16
поделиться

нужно ли пользователю знать точное имя своего каталога? Если нет, почему бы не создать каталоги, используя произвольные правила, и связать каждый с его владельцем в БД или что-то в этом роде?

0
ответ дан 6 December 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: