2016-04-30 22 views
1

我正在开发一个项目来加密数据并将其发送到服务器,所以我需要将数据存储在一个文件中,然后发送它到服务器(PHP)。用户然后抓住客户端上的文件来解密它。但我遇到了将数据存储在文本文件中或打开它的问题。用JavaScript创建新的文本文件()但存储[objectFile]而不是文本

我没有创建文件的问题,但是当我打开文件/使用FileReader()时,它说:[objectFile]而不是数据。

我在做什么错?下面是一个例子,我尽量简化它。 注意:我无法读取jquery。

<!DOCTYPE html> 
<html> 
    <head> 
     <script> 
      function createdTextFile(){ 
       var date = new Date(); 
       var file = new File(["text text text text text text"], "textfile.txt", {type: "text", lastModified: date}); 
      /* 
       sent file to server 
       var formdata = new FormData(); 
       formdata.append("Uploaded_file", file);      
      */ 

       //Created download link 
       var uriContent = "data:application/octet-stream,"+file; 
       var div_idFileDownload = document.getElementById("file_dowload"); 
       div_idFileDownload.innerHTML = ""; 
       var createElement_aFileDownload = document.createElement("a"); 
        createElement_aFileDownload.setAttribute("download", "textfile.txt"); 
        createElement_aFileDownload.setAttribute("href", uriContent); 
        div_idFileDownload.appendChild(createElement_aFileDownload); 
       var nm = document.createTextNode("textfile.txt"); 
        createElement_aFileDownload.appendChild(nm); 
      } 
      //open text file: [objectFile] 
      //Need the text file to say: text text text text text text 
     </script> 
    </head> 
    <input type="file" id="upload_img"> 
    <input type="button" onclick ="createdTextFile()" value="download"> 
    <div id="file_dowload"><div/> 
</html> 

回答

2

试试吧,你可以测试看到这个工作here

function createdTextFile(){ 
    var date = new Date(); 
    var file = new File(["text text text text text text"], "textfile.txt", {type: "text", lastModified: date}); 
    var reader = new FileReader(); 
    reader.readAsDataURL(file); 
    reader.onload = function() { 

     //Created download link 
     //var uriContent = "data:application/octet-stream,"+file; 
     var uriContent = reader.result; 
     var div_idFileDownload = document.getElementById("file_dowload"); 
     div_idFileDownload.innerHTML = ""; 
     var createElement_aFileDownload = document.createElement("a"); 
     createElement_aFileDownload.setAttribute("download", "textfile.txt"); 
     createElement_aFileDownload.setAttribute("href", uriContent); 
     div_idFileDownload.appendChild(createElement_aFileDownload); 
     var nm = document.createTextNode("textfile.txt"); 
     createElement_aFileDownload.appendChild(nm); 
    }; 


} 
+0

好,我明白了!难怪PHP阅读它就好了。我不知道你可以使用FileReader()的结果作为url。谢谢安德森,你为我节省了数小时的试验和错误。 (: – toastext

+0

欢迎您,为您的情况,MDN的例子完美地工作:https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL –

相关问题