javascript - 如何将id作为FileUpload的参数传递给javascript函数以检查文件的扩展名和大小

标签 javascript asp.net file-upload

我正在开发 ASP.NET Web 应用程序,其中有 6 个 FileUpload 控件 对于一个文件上传,我创建了一种 JavaScript 方法来检查文件扩展名和文件大小。 但如何动态传递 FileUpload 上传的 id,以便仅通过一种方法我就可以验证所有 FileUpload 我的javacript代码是

  var validFilesTypes = ["bmp", "gif", "png", "jpg", "jpeg", "doc", "docx",         "xls", "xlsx", "htm", "html", "rar", "zip", "txt", "pdf"];
    function CheckExtension() {
        /*global document: false */
        var file = document.getElementById("<%=txtTenderDoc.ClientID%>");
        var path = file.value;
        var ext = path.substring(path.lastIndexOf(".") + 1, path.length).toLowerCase();
        var isValidFile = false;
        for (var i = 0; i < validFilesTypes.length; i++) {
            if (ext == validFilesTypes[i]) {
                isValidFile = true;
                break;
            }
        }
        if (!isValidFile) {
            alert("Invalid File. Unknown Extension Of Tender Doc" + "Valid extensions are:\n\n" + validFilesTypes.join(", "));
        }
        return isValidFile;
    }

    function validateFileSize() {
        /*global document: false */
        var file = document.getElementById("<%=txtTenderDoc.ClientID%>");
        var fileSize = file.files[0].size;
        var isValidFile = false;
        if (fileSize !== 0 && fileSize <= 25214400) {
            isValidFile = true;
        }
        if (!isValidFile) {
            alert("File Size Should be Greater than 0 and less than 25 mb");
        }
        return isValidFile;
    }

我已经在 aspx 页面中使用了这个

<asp:FileUpload ID="txtTenderDoc" onchange="var result= CheckExtension();validateFileSize(); return result"
                        runat="server"></asp:FileUpload>

如您所见,我必须创建 6 种方法来检查文件大小和文件扩展名,如何仅用一种方法来做到这一点......

最佳答案

function CheckExtension(Id) {
    /*global document: false */
    var file = document.getElementById(Id);
    var path = file.value;
    var ext = path.substring(path.lastIndexOf(".") + 1, path.length).toLowerCase();
    var isValidFile = false;
    for (var i = 0; i < validFilesTypes.length; i++) {
        if (ext == validFilesTypes[i]) {
            isValidFile = true;
            break;
        }
    }
    if (!isValidFile) {
        alert("Invalid File. Unknown Extension Of Tender Doc" + "Valid extensions are:\n\n" + validFilesTypes.join(", "));
    }
    return isValidFile;
}   


function validateFileSize(Id) {
    /*global document: false */
    var file = document.getElementById(Id);
    var fileSize = file.files[0].size;
    var isValidFile = false;
    if (fileSize !== 0 && fileSize <= 25214400) {
        isValidFile = true;
    }
    if (!isValidFile) {
        alert("File Size Should be Greater than 0 and less than 25 mb");
    }
    return isValidFile;
}

<asp:FileUpload ID="txtTenderDoc" onchange="var result=      CheckExtension('textTenderDoc');validateFileSize('textTenderDoc'); return result"  runat="server"></asp:FileUpload>

我假设您创建了六个不同的文件上传控件。这样你就可以在编译时将 id 传递到 java 脚本中,这样你就只有一个方法。

关于javascript - 如何将id作为FileUpload的参数传递给javascript函数以检查文件的扩展名和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677307/

相关文章:

javascript - Angularjs $location 服务显然不解析 url?

javascript - 从现有 JSON 对象构建新 JS 对象的最佳方法是什么?

c# - 如何在 ASP 中单击 ListView 中的订单号时打开包含订单详细信息的弹出窗口

php - 是否可以在 PHP 中接收上传的文件而不将它们存储在文件系统中?

PHP:当用户上传带有不允许的扩展名的图像时,文件扩展名是空的

javascript - Dart:将 html 文件加载到 Flutter Webview

javascript - 如何从调用函数的元素向 JavaScript 函数传递参数?

javascript - 如何在回发时保持 SlideToggle 的状态?

c# - ASP.NET Web Forms 4.5 模型绑定(bind),其中模型包含集合

ruby-on-rails - 无法使用 Rails 中的 Fog 将照片上传到 S3 : !! #<Excon::Errors::SocketError: 错误地址>