2010-01-10 6 views
2

i ont une forme comme ceci:Valider type d'image en utilisant javascript

<form method=post src=upload enctype="multipart/form-data"> 
    <input name="img1" id="img1" type="file"> 
    <input type="submit" value="Upload"> 
</form > 

S'il vous plaît comment puis-je valide ce formulaire en javascript pour que seuls les fichiers jpg sont téléchargés. Merci d'avoir lu.

Répondre

10

Vous pouvez lier l'événement onsubmit de votre formulaire, et vérifier si le value de votre fichier d'entrée se termine par « .jpg » ou « .jpeg », quelque chose comme ceci:

window.onload = function() { 
    var form = document.getElementById('uploadForm'), 
     imageInput = document.getElementById('img1'); 

    form.onsubmit = function() { 
    var isValid = /\.jpe?g$/i.test(imageInput.value); 
    if (!isValid) { 
     alert('Only jpg files allowed!'); 
    } 

    return isValid; 
    }; 
}; 

Vérifiez l'exemple ci-dessus here.

+0

De rien Selom, rappelez-vous aussi d'écrire le code de validation côté serveur, un utilisateur avec JavaScript désactivé pourra uploader n'importe quel fichier ... – CMS

+0

Dites-moi comment je peux modifier ce code afin qu'il valide à la fois le type d'image et taille. merci de répondre – Selom

+1

Vous ne pouvez pas vraiment savoir autre chose que le nom du fichier à partir d'un élément d'entrée de fichier (dans les navigateurs modernes, vous ne pouvez même pas connaître le chemin physique du fichier), cela est dû aux politiques de sécurité. restreint et il ne peut pas accéder au système de fichiers client. Vous devriez utiliser un composant basé sur Flash ou Java comme SWFUpload (http://swfupload.org/) ou JUpload (http://sourceforge.net/projects/jupload/) si vous voulez faire des restrictions de taille de fichier sur le client. – CMS

2

Vous pouvez utiliser le « accepter » paramter à la balise d'entrée:

<input name="img1" id="img1" type="file" accept="image" /> 

Son pas JavaScript, mais devrait encore être utile pour empêcher l'utilisateur de même tenter de télécharger un fichier non-image.

+1

Malheureusement l'attribut 'accept' n'est pas vraiment utile, il n'est pas utilisé par les navigateurs que je connais ... http://stackoverflow.com/questions/181214/file-input-accept-attribute -is-it-utile – CMS

+0

Bon appel. Merci. –

0

71944 a une certaine javascript qui semble faire ce que vous avez besoin. Gardez à l'esprit que ce n'est que la validation côté client, donc vous aurez toujours envie de le valider sur le serveur aussi.

2

Forme: -

<form method=post src=upload enctype="multipart/form-data" onsubmit="return validateFile()"> 
<input name="img1" id="img1" type="file"> 
<input type="submit" value="Upload"> 
</form> 

code Javascript: -

 function validateFile() 
     { 
      var allowedExtension = ['jpeg', 'jpg']; 
      var fileExtension = document.getElementById('img1').value.split('.').pop().toLowerCase(); 
      var isValidFile = false; 

       for(var index in allowedExtension) { 

        if(fileExtension === allowedExtension[index]) { 
         isValidFile = true; 
         break; 
        } 
       } 

       if(!isValidFile) { 
        alert('Allowed Extensions are : *.' + allowedExtension.join(', *.')); 
       } 

       return isValidFile; 
     } 

si vous souhaitez ajouter d'autres extensions d'image s'il vous plaît ajouter dans le tableau allowedExtension;

var allowedExtension = ['jpeg', 'jpg', 'png', 'gif', 'bmp']; 
Questions connexes