2016-11-08 3 views
-1

Я пытаюсь зашифровать, а затем загружать файлы из папки на стороне клиента. У меня есть код ниже, но фактический зашифрованный файл не загружается. Создание URL-адреса загрузки - это то, где возникают проблемы.Auto - Загрузить зашифрованный файл

<!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); 
       }) 
Смежные вопросы