2016-11-08 74 views
-1

我想加密,然后从客户端的文件夹下载文件。我有下面的代码,但实际的加密文件没有得到下载。构建下载URL是我遇到问题的地方。自动 - 下载加密文件

<!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 array1 = new Array 

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

      // Uses different reader for all files 
      var reader = new FileReader 
      var downloadUrl = '' 
      reader.onload = function() { 
       // reader.result refer to dataUrl 
       // theFile is the blob... CryptoJS wants a string... 
       var encrypted = CryptoJS.AES.encrypt(reader.result, '12334') 
       downloadUrl = 'data:application/octet-stream,' + encrypted; 
       array1.push(downloadUrl); 
       setTimeout("window.location.assign('" + downloadUrl + file.name + '.encrypted'+ "');", 500) 
      } 

      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> 
+0

我只想下载加密文件。我相信该文件在加密后被存储在浏览器沙箱中。 – Noob

+0

如果您看到代码,我没有看到任何服务器端代码。我没有发送文件到任何服务器,将内容保存为_data uri_。我可以将它设置为一个按钮的属性并在onClick期间调用它,但我希望能够在没有按钮的情况下执行此操作。 – Noob

+0

在客户端保存加密文件。 – Noob

回答

0

如果有人正在寻找这一个,我能够解决它如下。

   var reader = new FileReader(); 
       reader.onload = function (e) { 
       var encrypted = CryptoJS.AES.encrypt(reader.result, '12345'); 
       var dataUrl = 'data:data:application/octet-stream,' + encrypted; 
       array1.push('href=data:data:application/octet-stream,' + encrypted); 

       var link = document.createElement("a"); 
       link.download = file.name + '.encrypted'; 
       link.target = "_blank"; 

       // Construct the uri 
       link.href = dataUrl; 
       document.body.appendChild(link); 
       link.click(); 

       // Cleanup the DOM 
       document.body.removeChild(link); 
       delete link; 
       }; 
       $('#thelist').append('FILES: ' + file.name + '<br>') 
       reader.readAsDataURL(file); 
       })