1

ファイルアップローダーでフィルタリングしたい。FireFox では正常に動作しますが、Google Chrome では、ファイルが有効であっても無効なファイルが常に表示されます。

function validate() {
    var uploadcontrol = document.getElementById('<%=fileupload.ClientID%>').value;

    //Regular Expression for fileupload control.
    //var reg = /^(([a-zA-Z])|(\\{2}\w+)\$?)(\\(\w[\w].*))+(.jpg|.jpeg|.jpe|.gif|.bmp|.png|.JPG|.JPEG|.JPE|.GIF|.BMP|.PNG)$/;
    var reg = /^(([0-9a-zA-Z\^\&\'\@\{\}\[\]\,\$\=\!\-\#\(\)\%\+\~\_ ]))+(.jpg|.jpeg|.jpe|.gif|.bmp|.png|.JPG|.JPEG|.JPE|.GIF|.BMP|.PNG|.dds|.psd|.pspimage|.tga|.thm|.tif|.tiff|.yuv)$/;

    if (uploadcontrol.length > 0) {
        //Checks with the control value.
        if (reg.test(uploadcontrol)) {
            return true;
        }
        else {
            //If the condition not satisfied shows error message.
            alert("Only Images are allowed!");
            return false;
        }
    }
} //End of function validate.
4

2 に答える 2

1

それはあなたが持っている非常に奇妙な正規表現です。これを試してみてください

var reg = /^[^\\//]+\.(jpg|jpeg|jpe|gif|bmp|png|dds|psd|pspimage|tga|thm|tif|tiff|yuv)$/i;

これは、クロムのさまざまなファイル名で機能します。

最後の i 修飾子は大文字と小文字を区別しません。名前の一致は、このようにもう少し寛大です。

于 2013-05-17T12:04:26.190 に答える
0

あなたのテストはクロムで動作しているようです。このフィドルを参照してください

uploadcontrolそのため、chrome と firefoxの値をデバッグしてそれらの違いを確認し、正規表現を調整する必要があると思います。

于 2013-05-17T12:07:25.553 に答える