Ho un modulo HTML di base da cui posso prendere un po 'di informazioni che sto esaminando in Firebug.
Il mio unico problema è che sto cercando di codificare in base64 i dati del file prima che vengano inviati al server in cui è necessario che siano in quella forma per essere salvati nel database.
<input type="file" id="fileupload" />
E in Javascript + jQuery:
var file = $('#fileupload').attr("files")[0];
Ho alcune operazioni basate su javascript disponibile: .getAsBinary (), .getAsText (), .getAsTextURL
Tuttavia, nessuno di questi restituisce testo utilizzabile che può essere inserito in quanto contengono "caratteri" inutilizzabili : non voglio che si verifichi un "postback" nel mio file caricato e ho bisogno di avere più moduli mirati a oggetti specifici, quindi è importante che io ottenere il file e utilizzare Javascript in questo modo.
Come dovrei ottenere il file in modo tale da poter utilizzare uno degli encoder Javascript base64 che sono ampiamente disponibili !?
Grazie
Aggiornamento - A partire da Bounty qui, è necessario il supporto cross browser !!!
Ecco dove mi trovo:
<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>
Un paio di problemi con il supporto cross browser:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
Inoltre, IE non supporta:
var file = $j(fileUpload.toString()).attr('files')[0];
Quindi devo sostituire con:
var element = 'id';
var element = document.getElementById(id);
Per supporto IE.
Funziona in Firefox, Chrome e Safari (ma non codifica correttamente il file, o almeno dopo che è stato pubblicato il file non esce correttamente)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
Anche,
file.readAsArrayBuffer()
Sembra essere supportato solo in HTML5?
Molte persone hanno suggerito: http://www.webtoolkit.info/javascript-base64.html
Ma questo restituisce solo un errore sul metodo UTF_8 prima che codifichi base64? (o una stringa vuota)
var encoded = Base64.encode(file);