2016-04-08 17 views
1

haben mehrere Dateieingaben in Form jetzt muss ich für jede Dateieingabe überprüfen, dass ZIP-Datei keine ungültigen Dateien enthält (doc, docx und pdf nur erlauben).zip.js, um den Dateinamen in zip zu lesen. (Nur clientseitige Skripte)

Ich schrieb

<script src="https://code.jquery.com/jquery-2.2.1.js" integrity="sha256-eNcUzO3jsv0XlJLveFEkbB8bA7/CroNpNVk3XpmnwHc=" crossorigin="anonymous"></script>  
<script type="text/javascript" src="/js/zip.js"/> 
<script type="text/javascript" src="/js/inflate.js"/> 
<script type="text/javascript" src="/js/deflate.js"/> 
<script type="text/javascript" src="/js/z-worker.js"/> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     if((window.location.href.indexOf("LibraryItemUpload`1&ParentId=7d428470-2234-41c0-85f4-a512d51198c6") > -1) || (window.location.href.indexOf("LibraryItemUpload%601&ParentId=7d428470-2234-41c0-85f4-a512d51198c6") > -1)) 
     { 
      $("input:file").change(function() { 
       var regex=new RegExp("^[A-Za-z0-9 ]+$"); 
       var file=this.files[0]; 
       var key = this.value; 
       var ze = key.split('\\').pop(); 
       var filename = ze.split('.')[0]; 
       var extension=key.split('.').pop().trim().toLowerCase(); 
       if(extension == 'zip') 
       {    
        zip.createReader(new zip.BlobReader(file), function(reader) { 

         // get all entries from the zip 
         reader.getEntries(function(entries) { 
         if (entries.length) { 

          // get first entry content as text 
          entries[0].getData(new zip.TextWriter(), function(text) { 
          // text contains the entry data as a String 
          console.log(text); 

          // close the zip reader 
          reader.close(function() { 
           // onclose callback 
          }); 

          }, function(current, total) { 
          // onprogress callback 
          }); 
         } 
         }); 
        }, function(error) { 

        }); 
       } 
       if (!regex.test(filename)) {     
        alert('Please do not use special characters in file name please rename file name and upload it again.'); 
        location.reload(); 
       } 
       else { 
        return true; 
       } 
      }); 
     } 
    }); 
    </script> 

und geschriebenen Code Dateinamen von zip.js zu lesen, aber in zip.createReader Funktion gehen fließen doen't.

Bitte schlagen Sie mir vor, wenn ein anderes Javascript für das Lesen von ZIP-Datei, möchte ich nur Einträge Objekt, um Dateinamen zu lesen.

+0

Ihr Code sieht unvollständig aus, bitte geben Sie uns mehr Code und die Fehlerbeschreibung, die Sie erhalten. Haben Sie die zip.js-Dokumentation überprüft, die Informationen zu den Listeneinträgen in zip enthält? -https: //gildas-lormeau.github.io/zip.js/core-api.html#zip-reading-example – majita

Antwort

0
function readEntries(entries) { 
    var entryLength = entries.length; 
    for (i = 0; i < entryLength; i++) { 
     var entry = entries[i]; 
     var fileName = entry.filename.substring(entry.filename.lastIndexOf("/") + 1); //if inside folder 
     var ext = fileName.split(".").pop().toLowerCase(); 
     if (ext.toUpperCase() == 'DOC' || ext.toUpperCase() == 'PDF' || 
      ext.toUpperCase() == 'DOCX') { 
      //logic 
     } 
    } 
} 

zip.useWebWorkers = false;//explicitly include (required) zip-workers ['zip.js','zip-fs.js','z-worker.js','inflate.js','deflate.js'] 

var fileInput = document.getElementById("zipfile");//Input File 
fileInput.addEventListener('change', function(event) { 
    zip.createReader(new zip.BlobReader(fileInput.files[0]), function(zipReader) { 
     zipReader.getEntries(readEntries); 
    }, function (error) { 
     console.log(error); 
    }); 
}); 

Ich habe dieses Stück Code nicht getestet, aber ich habe ähnliche Logik zuvor verwendet.