J'ai un formulaire HTML de base à partir duquel je peux récupérer un peu d'informations que j'examine dans Firebug.
Mon seul problème est que j'essaie d' encoder en base64 les données du fichier avant qu'elles ne soient envoyées au serveur où il est nécessaire d'être sous cette forme pour être enregistrées dans la base de données.
<input type="file" id="fileupload" />
Et en Javascript + jQuery:
var file = $('#fileupload').attr("files")[0];
J'ai quelques opérations basées sur javascript disponible: .getAsBinary (), .getAsText (), .getAsTextURL
Cependant, aucun de ceux-ci ne renvoie de texte utilisable qui peut être inséré car ils contiennent des `` caractères '' inutilisables - je ne veux pas qu'un `` postback '' se produise dans mon fichier téléchargé, et j'ai besoin de plusieurs formulaires ciblant des objets spécifiques, il est donc important que je récupérez le fichier et utilisez Javascript de cette façon.
Comment dois-je obtenir le fichier de telle manière que je puisse utiliser l'un des encodeurs Javascript base64 qui sont largement disponibles !?
Merci
Mise à jour - Commencer la prime ici, besoin de la prise en charge de plusieurs navigateurs !!!
Voici où j'en suis:
<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>
Quelques problèmes avec la prise en charge de plusieurs navigateurs:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
De plus, IE ne prend pas en charge:
var file = $j(fileUpload.toString()).attr('files')[0];
Je dois donc remplacer par:
var element = 'id';
var element = document.getElementById(id);
Pour le support IE.
Cela fonctionne dans Firefox, Chrome et Safari (mais n'encode pas correctement le fichier, ou du moins après sa publication, le fichier ne sort pas correctement)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
Aussi,
file.readAsArrayBuffer()
Semble être pris en charge uniquement en HTML5?
Beaucoup de gens ont suggéré: http://www.webtoolkit.info/javascript-base64.html
Mais cela ne renvoie qu'une erreur sur la méthode UTF_8 avant l'encodage en base64? (ou une chaîne vide)
var encoded = Base64.encode(file);