代码之家  ›  专栏  ›  技术社区  ›  Ali

如何使用javascript/jquery验证文件上载字段

  •  17
  • Ali  · 技术社区  · 16 年前

    如何验证用户是否已选择要上载的文件?

    编辑:颠簸

    5 回复  |  直到 7 年前
        1
  •  22
  •   Sietse    14 年前

    检查它的 value 财产:

    在jquery中(因为您的标签提到它):

    $('#fileInput').val()
    

    或者在普通的javascript中:

    document.getElementById('myFileInput').value
    
        2
  •  17
  •   Edison Trutwein    7 年前

    我的函数将检查用户是否选择了该文件,您还可以检查是否允许该文件扩展名。

    试试这个:

    <input type="file" name="fileUpload" onchange="validate_fileupload(this.value);">
    
    function validate_fileupload(fileName)
    {
        var allowed_extensions = new Array("jpg","png","gif");
        var file_extension = fileName.split('.').pop().toLowerCase(); // split function will split the filename by dot(.), and pop function will pop the last element from the array which will give you the extension as well. If there will be no extension then it will return the filename.
    
        for(var i = 0; i <= allowed_extensions.length; i++)
        {
            if(allowed_extensions[i]==file_extension)
            {
                return true; // valid file extension
            }
        }
    
        return false;
    }
    
        3
  •  1
  •   andrew pate    7 年前

    基于Ravinders解决方案,此代码停止提交表单。在服务器端检查扩展也是明智的。所以你不会让黑客上传他们想要的任何东西。

    <script>
    var valid = false;
    
    function validate_fileupload(input_element)
    {
        var el = document.getElementById("feedback");
        var fileName = input_element.value;
        var allowed_extensions = new Array("jpg","png","gif");
        var file_extension = fileName.split('.').pop(); 
        for(var i = 0; i < allowed_extensions.length; i++)
        {
            if(allowed_extensions[i]==file_extension)
            {
                valid = true; // valid file extension
                el.innerHTML = "";
                return;
            }
        }
        el.innerHTML="Invalid file";
        valid = false;
    }
    
    function valid_form()
    {
        return valid;
    }
    </script>
    
    <div id="feedback" style="color: red;"></div>
    <form method="post" action="/image" enctype="multipart/form-data">
      <input type="file" name="fileName" accept=".jpg,.png,.bmp" onchange="validate_fileupload(this);"/>
      <input id="uploadsubmit" type="submit" value="UPLOAD IMAGE" onclick="return valid_form();"/>
    </form>
    
        4
  •  0
  •   nickf    16 年前

    至少在firefox中,dom检查器告诉我文件输入元素有一个名为 files . 你应该能够检查它的长度。

    document.getElementById('myFileInput').files.length
    
        5
  •  0
  •   joran    13 年前

    我是从某个论坛上得到的。希望对你有用。

    <script type="text/javascript">
     function validateFileExtension(fld) {
        if(!/(\.bmp|\.gif|\.jpg|\.jpeg)$/i.test(fld.value)) {
            alert("Invalid image file type.");      
            fld.form.reset();
            fld.focus();        
            return false;   
        }   
        return true; 
     } </script> </head>
     <body> <form ...etc...  onsubmit="return
     validateFileExtension(this.fileField)"> <p> <input type="file"
     name="fileField"  onchange="return validateFileExtension(this)">
     <input type="submit" value="Submit"> </p> </form> </body>