2016-11-07 50 views
0

我想加密位於客戶端的文件夾內的所有文件。我有下面的代碼,但得到一個錯誤。我不完全確定錯誤。使用CryptoJS進行文件加密 - 客戶端

錯誤:遺漏的類型錯誤:在HTML行16無法讀取的不確定(...)財產 '長度'。

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

順便說一句,瀏覽器擁有現代化的標準加密LIB建於...也許嘗試使用呢?如果有必要使用polyfill?

+0

你可以擴展現代標準的Crypto庫嗎?它是什麼? – Noob

+0

對不起,你必須google一下這個...不是對Crypto的導出... https://developer.mozilla.org/en-US/docs/Web/API/Window/crypto – Endless

相關問題