C # WPF - разрешать только определенные расширения файлов

1

У меня есть OpenFileDialog и я хочу только разрешить .txt как действительный файл для пользователей.

Я знаю, что я могу добавить Filter в OpenFileDialog следующим образом:

var dialog = new OpenFileDialog();
dialog.DefaultExt = ".txt";
dialog.Filter = "Text Files (*.txt)|*.txt";
var result = dialog.ShowDialog();
// Do something with the result

Проблема, однако, в том, что я все еще могу прямо сказать что-то вроде "test.jpg" в OpenFileDialog а затем он открывает эту загрузку этого файла.jpg. (Очевидно, что это происходит неправильно позже, но на данный момент это не имеет значения.) Я просто хочу знать, как я могу ограничить пользователя только добавлением файлов ".txt", ничего больше? (Путем непосредственной проверки его внутри OpenFileDialog вместо того, чтобы делать это где-то позже.)

  • 2
    Я не уверен, есть ли способ запретить пользователю изменять расширение, введя его, но вы можете проверить расширение сразу после того, как они выберут файл и сообщат об ошибке, если она незаконна.
  • 0
    Я думаю, что вы можете либо проверить расширение после того, как пользователь выберет файл, либо написать собственный диалог с файлом.
Показать ещё 3 комментария
Теги:
file
wpf
openfiledialog

1 ответ

3
Лучший ответ

Вы не можете сделать это только в OpenFileDialog и даже если вы можете это плохое ограничение.

Используя пример *.txt есть несколько расширений файлов, которые являются обычным текстом внутри, *.bat или все расширения файлов codding *.cs, *.js и т.д....

Вы не должны ограничивать пользователя тем файлом, который он может наложить на него.

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

  • 0
    Ах, хорошо, тогда я просто буду придерживаться фильтра. Прямо сейчас он ничего не делает с контентом, если он имеет неправильный формат, мне просто было интересно, могут ли такие вещи, как .bat или .exe, быть вредными при инъекции, и хотел предотвратить подобные файлы, ограничив то, что пользователь можно вставить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню