验证asp文件上载控件客户端

Kri*_*Dey 1 asp.net validation file-upload client-side

我的页面上有一个asp fileupload控件.如何在客户端验证所选文件.验证规则:1.文件必须是jpeg,png,bmp或gif.2.文件大小必须在25 kb和2 mb之间.请帮忙.谢谢.
我试过以下代码来验证扩展名

<asp:FileUpload ID="FileUpload2" runat="server"/>                    
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ValidateFileUpload" ErrorMessage="Invalid file type. Only .gif, .jpg, .png, .bmp and .jpeg are allowed." ControlToValidate="FileUpload2" ValidationGroup="update">&nbsp;</asp:CustomValidator>
<script language="javascript" type="text/javascript">
    function ValidateFileUpload(Source, args) {
        var fuData = document.getElementById('<%= fuData.ClientID %>');
        var FileUploadPath = fuData.value;

        if (FileUploadPath == '') {
            // There is no file selected
            args.IsValid = false;
        }
        else {
            var Extension = FileUploadPath.substring(FileUploadPath.lastIndexOf('.') + 1).toLowerCase();

            if (Extension == "jpg" || Extension == "jpeg" || Extension == "png" || Extension == "gif" || Extension == "bmp") {
                args.IsValid = true; // Valid file type
            }
            else {
                args.IsValid = false; // Not valid file type
            }
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

Bra*_*ing 6

您无法通过客户端脚本确定在文件输入元素中选择的文件的大小.为了确定文件的大小,必须具有对文件的读访问权.正如您可能想象的那样,允许JavaScript读取计算机上的文件将是"非常糟糕的主意."™

我经常看到这类问题,并且认为文件输入元素实际上有什么困惑.当用户选择文件时,文件字节不会"加载"到该元素中,使得它们可供读取.相反,输入指定对文件位置的引用,以便浏览器知道 - 何时发布表单 - 对文件进行编码并使用POST发送它.此过程是浏览器的内部过程,不会以脚本可以利用的方式向客户端公开.

如果需要进行文件大小验证,则应在可以访问实际文件字节的服务器上执行此操作.如果您担心人们使用非常大的文件"泛滥"您的站点,您可以通过配置IIS实例来指定允许的最大POST大小.