0

アップロードするファイルが必要な形式であるかどうかを検証する JavaScript のファイル検証コードです。このコードを Mozilla で実行すると、Mozilla は常に「有効なファイル拡張子ではありません」というエラーを表示しますが、このスクリプトは Chrome と IE で完全に機能します。

regx_docx = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+(.doc|.docx|.DOC|.DOCX|.jpg|.jpeg|.JPG|.JPEG|.gif|.GIF|.bmp|.BMP|.png|.PNG|.pdf|.PDF|.xls|.XLS|.xlsx|.XLSX|.txt|.TXT|.rar|.RAR|.zip|.ZIP)$/;
        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];      
            if ((field.name == 'doc[]') && (field.value!= '')) {            
                if(!regx_docx.test(field.value)){
                    count++;
                    errtxt+= "\n"+count+") Not a valid file Extension.";
                }
            }
        }   
4

1 に答える 1

2

一部

^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+

次の 2 つの点で問題があります。

  1. \パス区切りとして想定されるため、Windows でのみ機能します。
  2. ブラウザーが選択したファイルへのパスを提供する場合にのみ機能しますが、セキュリティ上の理由から Firefox は提供しません (IE はダミーのパスを提供します)。

とにかく拡張機能にのみ関心があるので、正規表現からその部分を削除するだけで問題ありません。

また、ドットをリテラル文字と一致させるには、ドットをエスケープする必要があります.

regx_docx = /\.(doc|docx|DOC|DOCX|jpg|jpeg|JPG|JPEG|gif|GIF|bmp|BMP|png|PNG|pdf|PDF|xls|XLS|xlsx|XLSX|txt|TXT|rar|RAR|zip|ZIP)$/;
于 2014-05-09T07:08:18.293 に答える