Ich habe ein einfaches HTML-Formular, aus dem ich einige Informationen abrufen kann, die ich in Firebug untersuche.
Mein einziges Problem ist, dass ich versuche, die Dateidaten mit base64 zu codieren, bevor sie an den Server gesendet werden, auf dem sie in dieser Form vorliegen müssen, um in der Datenbank gespeichert zu werden.
<input type="file" id="fileupload" />
Und in Javascript + jQuery:
var file = $('#fileupload').attr("files")[0];
Ich habe einige Operationen, die auf verfügbarem Javascript basieren: .getAsBinary (), .getAsText (), .getAsTextURL
Keiner dieser Texte gibt jedoch verwendbaren Text zurück, der eingefügt werden kann, da er unbrauchbare "Zeichen" enthält. Ich möchte nicht, dass in meiner Datei ein "Postback" auftritt, und ich muss mehrere Formulare für bestimmte Objekte haben, daher ist es wichtig, dass ich Holen Sie sich die Datei und verwenden Sie Javascript auf diese Weise.
Wie soll ich die Datei so erhalten, dass ich einen der weit verbreiteten Javascript base64-Encoder verwenden kann?
Vielen Dank
Update - Start Bounty hier, brauche Cross-Browser-Unterstützung !!!
Hier bin ich:
<input type="file" id="fileuploadform" />
<script type="text/javascript">
var uploadformid = 'fileuploadform';
var uploadform = document.getElementById(uploadformid);
/* method to fetch and encode specific file here based on different browsers */
</script>
Einige Probleme mit der Cross-Browser-Unterstützung:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
Außerdem unterstützt IE nicht:
var file = $j(fileUpload.toString()).attr('files')[0];
Also muss ich ersetzen durch:
var element = 'id';
var element = document.getElementById(id);
Für IE-Unterstützung.
Dies funktioniert in Firefox, Chrome und Safari (aber die Datei wird nicht richtig codiert, oder zumindest nach dem Posten wird die Datei nicht richtig ausgegeben).
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
Ebenfalls,
file.readAsArrayBuffer()
Scheint nur in HTML5 unterstützt zu werden?
Viele Leute schlugen vor: http://www.webtoolkit.info/javascript-base64.html
Dies gibt jedoch nur einen Fehler bei der UTF_8-Methode zurück, bevor sie von base64 codiert wird. (oder eine leere Zeichenfolge)
var encoded = Base64.encode(file);