2016-04-06 14 views
0

私のaswerは私は簡単だと信じています。 FileReader関数のbase64コンテンツをデータベースに送るコードを作成する必要があります。私はbase64の文字列を入れて、フォームの種類を隠してみましたが、私はできません。 I怒鳴るソースコードをアップロードします。JavaScriptベース64変換

JSFIDDLE

<script type="text/javascript"> 
    function readMultipleFiles(evt) { 
    //Retrieve all the files from the FileList object 
    var files = evt.target.files; 

    if (files) { 
     for (var i=0, f; f=files[i]; i++) { 
       var r = new FileReader(); 
      r.onload = (function(f) { 
       return function(e) { 
        var contents = e.target.result; 
        alert( 
          "name: " + f.name + "n" 
          + "starts with: " + contents.substr(1, contents.indexOf("n")) 
        ); 
        document.write(f.name); 
       }; 
      })(f); 

      r.readAsText(f); 
     } 
    } else { 
      alert("Failed to load files"); 
    } 
    } 

    document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false); 
</script> 
+0

https://jsfiddle.net/41ynj4gc/を – Jaccon

答えて

0

もUnicodeをサポートするべきMDNから機能を使用してみてください:

function readMultipleFiles(evt) { 
    //Retrieve all the files from the FileList object 
    var files = evt.target.files; 

    if (files) { 
     for (var i=0, f; f=files[i]; i++) { 
       var r = new FileReader(); 
       r.onload = (function(f) { 
       return function(e) { 
        var contents = e.target.result; 
        alert( 
          "name: " + f.name + "n" 
          + "starts with: " + contents.substr(1, contents.indexOf("n")) 
        ); 
        document.getElementById('b64').innerHTML = b64EncodeUnicode(contents); 
       }; 
      })(f); 

      r.readAsText(f); 
     } 
    } else { 
      alert("Failed to load files"); 
    } 
} 

document.getElementById('fileinput').addEventListener('change', 
              readMultipleFiles, false); 
function b64EncodeUnicode(str) { 
    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, 
       function(match, p1) { 
        return String.fromCharCode('0x' + p1); 
       })); 
} 

注:

  • を私は上記をテストasciiファイルを使用して、https://www.base64encode.org/
  • document.writeを削除しました。代わりに、結果はspanで表示され、id = "b64"(document.getElementById('b64').innerHTML = ...
  • のように表示され、1つのファイルに対してのみ機能します。マイナーな編集が​​必要ですかdocument.write複数のファイルをサポートする

フィドルバックパット:https://jsfiddle.net/g6g1a51p/4/

関連する問題