2009-05-07 14 views

Répondre

17

Vérifiez qu'il est value propriété:

En jQuery (depuis votre balise mentionne):

$('#fileInput').val() 

Ou en JavaScript vanille:

document.getElementById('myFileInput').value 
0

Dans Firefox au moins, l'inspecteur DOM me dit que les éléments d'entrée de fichier ont une propriété appelée files. Vous devriez être capable de vérifier sa longueur.

document.getElementById('myFileInput').files.length 
+0

ne fonctionne pas en chrome donc probablement pas travailler dans IE soit –

+0

Il est HTML5: http: // stackoverflow .com/questions/7684011/get-le-fichier-noms-de-multiple-file-upload-field – ANeves

0

Je suis arrivé ce de certains forum. J'espère que cela vous sera utile.

<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> 
+5

Bienvenue sur SO. Si vous obtenez du code d'une autre source, vous devriez l'attribuer correctement et/ou créer un lien vers celui-ci, car cela pourrait constituer une violation du droit d'auteur, et il est au moins courtois de donner un crédit là où il doit l'être. – Scott

13

Ma fonction vérifie si l'utilisateur a sélectionné le fichier ou non et vous pouvez également vérifier si vous souhaitez autoriser cette extension de fichier ou non.

Essayez ceci:

 
<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; 
} 
+1

La boucle for doit être i KevInSol

1

Miser sur la solution Ravinders, ce code arrête le formulaire soumis. Il peut être judicieux de vérifier l'extension sur le serveur aussi. Ainsi, les hackers ne téléchargent pas ce qu'ils veulent.

<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> 
Questions connexes