【问题标题】:File Upload with RegularExpressionValidator not working with Firefox only IE使用 RegularExpressionValidator 上传文件不适用于仅 Firefox IE
【发布时间】:2010-10-23 01:42:47
【问题描述】:

我有一个带有以下验证表达式的 RegularExpressionValidator 的 FileUpload:

^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+(.gif|.jpg|.JPG|.JPEG|.GIF|.jpeg|.png|.bmp|.3dm|.3dmf|.ai|.drw|.dxf|.esp|.mng|.png|.ps|.psp|.svg|.tiff)$

这样我可以确保用户只上传图片。 但是由于某种原因,当我使用 Firefox 时它不起作用。为什么会这样?我该如何解决这个问题?

【问题讨论】:

  • 我会检查上传的文件名,看看 IE POST'ing 与 Firefox 作为文件名是否有任何区别。
  • 我已经检查过了。路径名没有区别。仍然是一个问题,为什么它不能在 Firefox 中运行。选择的答案提出了新的正则表达式与解释 Firefox 的问题。

标签: c# asp.net vb.net validation file-upload


【解决方案1】:

试试这个:

(.*?)\.(jpg|jpeg|png|gif)$

【讨论】:

    【解决方案2】:

    对 DaDa 解决方案的增强,满足区分大小写的需求:

    ^(.*?)\.(((j|J)(p|P)(e|E)?(g|G))|((p|P)(n|N)(g|G))|((g|G)(i|I)(f|F)))$
    

    【讨论】:

      【解决方案3】:

      我找到了解决办法.....

      (.*\.([gG][iI][fF]|[jJ][pP][gG]|[jJ][pP][eE][gG]|[bB][mM][pP])$)
      

      Link to the answer

      享受!!!

      【讨论】:

      • 这是一个与您的问题的正则表达式验证的完全不同的正则表达式。您可以使用更具可读性的正则表达式来完成完全相同的事情,就像 DaDa 发布的那样。
      【解决方案4】:

      我有办法解决这个问题:

      var reg = /([^\s]+(?=.(jpg|gif|png|jpeg)).\2)/gm; 
      if (reg.test(uploadcontrol) == false) { 
          alert("Please upload valid image formats(.jpg,.gif,.jpeg and .png)");
      }
      

      【讨论】:

        【解决方案5】:

        它不适用于 Firefox v3.x,因为它不允许 JavaScript 从文件输入字段中获取完整路径名,并且这个特定的正则表达式希望看到完整路径名。

        【讨论】:

          猜你喜欢
          • 2019-09-28
          • 2012-06-23
          • 2015-08-12
          • 1970-01-01
          • 2011-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多