2016-04-06 5 views
0

mein aswer ich glaube, ist einfach. Ich muss einen Code erstellen, um base64-Inhalt in der FileReader-Funktion zum Senden an die Datenbank zu bekommen. Ich versuche, die Base64-Zeichenfolge zu setzen und den Formulartyp zu verstecken, aber das kann ich nicht tun. Ich lade den Quellcode unten:Javascript base64 Konvertierung

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

Antwort

0

Versuchen Sie, die Funktion von MDN mit denen auch Unicode-Unterstützung sollte:

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); 
       })); 
} 

Hinweise:

  • Getestet habe ich die oben Verwenden einer ASCII-Datei und https://www.base64encode.org/
  • Die document.write wurde entfernt. Stattdessen wird das Ergebnis in einem span mit ID = "b64" (document.getElementById('b64').innerHTML = ...)
  • angezeigt, wie es nur für 1 Datei funktioniert. Erfordert kleinere Änderungen oder die document.write setzen zurück, um mehrere Dateien

Fiddle zu unterstützen: https://jsfiddle.net/g6g1a51p/4/