2016-11-07 75 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

相关问题