【问题标题】:C# WPF - Only allow certain file extensionsC# WPF - 只允许某些文件扩展名
【发布时间】:2014-11-14 15:59:02
【问题描述】:

我有一个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

然而,问题是我仍然可以在OpenFileDialog 中直接说"test.jpg" 之类的内容,然后它会打开此文件并上传此.jpg 文件。 (很明显它稍后会出错,但现在没关系。)我只想知道如何限制用户只添加“.txt”文件,没有别的? (通过在OpenFileDialog 中直接验证它,而不是稍后在某个地方进行验证。)

【问题讨论】:

  • 我不确定是否有办法防止用户通过键入来更改扩展名,但您可以在他们选择文件后立即检查扩展名并不合法就报错。
  • 我认为您的选择是在用户选择文件后检查扩展名,或者编写自己的文件对话框。
  • 您是否希望用户选择除 .txt 之外的所有内容???
  • 把问题说清楚,我可以更好地帮助你
  • Filter 功能仅用于限制文件列表,以便用户可以轻松选择正确类型的文件。您无法阻止他伪造文件扩展名并打开它除非您有一些库可以帮助您检测几乎所有常见的文件结构(通过读取内容而不是仅仅基于扩展名)。

标签: c# .net wpf file openfiledialog


【解决方案1】:

你不能只在 OpenFileDialog 中这样做,即使你可以这样做是一个糟糕的限制。

使用*.txt 示例,其中有多个文件扩展名是纯文本,*.bat 或所有编码文件扩展名*.cs*.js 等...

你不应该限制用户可以放什么文件。

对于更复杂的文件类型,如果您的程序无法处理用户传递的文件,您应该显示错误,而不是阻止用户传递文件。

【讨论】:

  • 嗯,好吧,那我就坚持使用过滤器。现在,如果内容的格式不正确,它不会对内容做任何事情,我只是想知道如果注入 .bat 或 .exe 之类的内容是否有害,并且想通过限制用户的内容来防止此类文件可以放进去。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
相关资源
最近更新 更多