2012-09-10 1 views
6

MSDN a un exemple here de l'objet fichier qui permet plusieurs fichiers à sélectionnerun seul fichier sélectionnez uniquement à l'aide objet File

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Acquiring File Information</title> 
    <style type="text/css"> 
     #alert { 
     color: red; 
     margin: 1em 0; 
     } 
    </style> 
    <script type="text/javascript"> 
     window.addEventListener('load', init, false); 

     function init() { 
     checkForFileApiSupport(); 
     document.getElementById('files').addEventListener('change', handleFileSelection, false); 
     } 

     function checkForFileApiSupport() { 
     if (window.File && window.FileReader && window.FileList && window.Blob) { 
     // All the File APIs are supported. 
     } 
     else { 
      document.getElementById('alert').innerHTML = "The File APIs are not fully supported in this browser."; 
     } 
     } 

     function handleFileSelection(evt) {  
     var files = evt.target.files; // The files selected by the user (as a FileList object). 

     // "files" is a FileList of file objects. List some file object properties.  
     var output = [];  
     for (var i = 0, f; f = files[i]; i++) {  
      output.push('<li><strong>', f.name, '</strong> (', f.type || 'n/a', ') - ',     
         f.size, ' bytes, last modified: ',     
         f.lastModifiedDate, '</li>');  
     }  
     document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; 
     } 
    </script> 
    </head> 

    <body> 
    <input type="file" id="files" name="files[]" multiple /> <!-- The name attribute value is typically paired with the field's data when submitted via a <form> tag. --> 
    <output id="list"></output> 
    <div id="alert"></div> 
    </body> 
</html> 

Est-il possible de limiter la sélection à un seul fichier dans le lieu de dialogue Ouvrir à l'aide f = files[0] qui peut ne pas toujours être fiable?

Répondre

19

Si vous ne souhaitez pas que l'utilisateur puisse sélectionner plus d'un fichier, vous devez supprimer l'attribut multiple de l'étiquette.

changement

<input type="file" id="files" name="files[]" multiple />

pour

<input type="file" id="file" name="file" />

Vous pouvez consulter la liste complète des attributs de la balise de type de fichier d'entrée here

+0

Utilisation du fichier Unique.Sélectionnez maintenant est ne retourne pas 'f.size',' f.type' ou 'f.lastModifiedDate'. Comment puis-je retourner ces similaires à la sélection de plusieurs fichiers? – user3357963

+1

Vous pouvez les obtenir de la même manière en accédant à l'objet File dans 'evt.target.files [0]'. Vous pouvez le voir travailler dans ce [violon] (http://jsfiddle.net/jbalsas/5XvFt/) – jbalsas

+0

Excellent merci! Je n'ai pas changé 'document.getElementById ('files') ..' à 'document.getElementById ('file') ...' – user3357963

Questions connexes