2016-11-07 8 views
0

Я пытаюсь зашифровать все файлы в папке, расположенной на стороне клиента. У меня есть код ниже, но ошибка. Я не совсем уверен в ошибке.Шифрование файла с использованием CryptoJS - Клиентская сторона

ОШИБКА:Uncaught TypeError: Не удается прочитать свойство 'длина' неопределенной (...) в строке 16 в HTML.

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

Подумайте, что вы делаете в $ .each –

+0

Цитирование через файлы в выбранной папке. – Noob

ответ

1

Читать все комментарии

<!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> 

Кстати, браузеры имеет современный стандарт Crypto Lib встроенный ... Может быть, попробовать использовать что вместо этого? и при необходимости использовать полиполн?

+0

Можете ли вы рассказать о современном стандартном Crypto lib? Что это? – Noob

+0

Извините, вам нужно пойти в Google немного для этого ... не экспортировать в Crypto ... https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto – Endless