验证ASP文件上传控制客户端(validate asp fileupload control cli

2019-07-28 20:44发布

我有我的页面上的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>

Answer 1:

你不能确定通过客户端脚本文件输入元素选择的文件的大小。 为了确定该文件的大小,必须具有对文件的读访问。 正如你可能想象,允许JavaScript读取您计算机上的文件将是一个“非常糟糕的主意”。™

我经常看到这样的问题,并认为,有什么文件输入元素实际上确实有些混乱。 当用户选择文件时,文件的字节不是“装载”到该元件,使得它们可用于读取。 相反,输入指定的文件位置的引用 ,以便浏览器知道-当表单被提交-编码文件,并与POST发送。 这个过程是内部的浏览器,并且以这样的方式,它可以通过脚本加以利用不暴露给客户端。

如果你需要做的文件大小验证,你应该这样做,你必须访问实际文件的字节在服务器上。 如果你所关心的人“淹没”您的网站有非常大的文件,你可以通过配置IIS实例指定允许的最大POST大小。



Answer 2:

您可以尝试AJAX控件工具包。 它有自己的文件上传控件。 它更凉爽



Answer 3:

在采用了时下大多数的浏览器,你可以对文件大小做客户端验证: https://stackoverflow.com/a/1832497/2705769



文章来源: validate asp fileupload control client side