2016-11-07 4 views
0

Ich versuche, alle Dateien in einem Ordner auf der Clientseite zu verschlüsseln. Ich habe den folgenden Code, bekomme aber einen Fehler. Ich bin mir über den Fehler nicht ganz sicher.Dateiverschlüsselung mit CryptoJS - Clientseite

ERROR:Uncaught Typeerror: kann Eigenschaft 'Länge' undefinierter (...) in Zeile 16 in html lesen.

index.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
    <title>Get Directory</title> 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script src="assets/js/aes.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#file-input").on("change", function(e){ 
      var thefiles = e.target.files; 
      var reader = new FileReader(); 
      $.each(thefiles, function(i, item){ 
       var thefile = item; 
       reader.onload = function(){ 
        var encrypted = CryptoJS.AES.encrypt(thefile, '12334'); 
       }; 
       reader.readAsDataURL(thefile); 
       $("#thelist").append("FILES: " + thefile.name + "<br />");; 
      }); 
     }); 
    }); 
    </script> 
</head> 
<body> 
    <input type="file" id="file-input" webkitdirectory="" directory=""> 
    <div id="thelist"></div> 
</body> 
</html> 
+0

Denken Sie daran, was Sie in der $ .each –

+0

Looping durch die Dateien im ausgewählten Ordner tun. – Noob

Antwort

1

alle Kommentare lesen

<!DOCTYPE html> 
<html> 
<head> 
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
    <title>Get Directory</title> 
    <!-- Update your jQuery version??? --> 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script src="assets/js/aes.js"></script> 
    <script> // type="text/javascript" is unnecessary in html5 

    // Short version of doing `$(document).ready(function(){` 
    // and safer naming conflicts with $ 
    jQuery(function($) { 

     $('#file-input').on('change', function() { 

      // You can't use the same reader for all the files 
      // var reader = new FileReader 

      $.each(this.files, function(i, file) { 

       // Uses different reader for all files 
       var reader = new FileReader 

       reader.onload = function() { 
        // reader.result refer to dataUrl 
        // theFile is the blob... CryptoJS wants a string... 
        var encrypted = CryptoJS.AES.encrypt(reader.result, '12334') 
       } 

       reader.readAsDataURL(file) 
       $('#thelist').append('FILES: ' + file.name + '<br>') 
      }) 
     }) 
    }) 
    </script> 
</head> 
<body> 
    <input type="file" id="file-input" webkitdirectory="" directory=""> 
    <div id="thelist"></div> 
</body> 
</html> 

btw, Browser einen modernen Standard Crypto lib in gebaut hat ... versuchen Vielleicht, dass statt mit? und wenn nötig ein Polyfill verwenden?

+0

Können Sie den modernen Standard Crypto lib erweitern? Was ist es? – Noob

+0

Entschuldigung, Sie müssen ein wenig dafür googeln ... kein Export auf Crypto ... https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto – Endless

Verwandte Themen