Obtener Base64 codificar datos de archivo desde el formulario de entrada

Tengo un formulario HTML básico del que puedo obtener un poco de información que estoy examinando en Firebug.

Mi único problema es que estoy tratando de base64 codifique los datos del archivo antes de enviarlos al servidor donde debe estar en ese formulario para guardarlos en la base de datos.

<input type="file" id="fileupload" />

Y en Javascript + jQuery:

var file = $('#fileupload').attr("files")[0];

Tengo algunas operaciones basadas en javascript disponible: .getAsBinary (), .getAsText (), .getAsTextURL

Sin embargo, ninguno de estos devuelve texto utilizable que se puede insertar ya que contiene 'personajes' inutilizables - No quiero que ocurra una 'devolución' en mi archivo cargado, y necesito tener múltiples formularios dirigidos a objetos específicos, así que es importante que obtenga el archivo y use Javascript de esta manera.

¿Cómo debo obtener el archivo de tal manera que pueda usar uno de los codificadores Javascript base64 que están ampliamente disponible

GraciaUpdate - ¡Comenzando la recompensa aquí, necesito soporte de navegador cruzado!

Aquí es donde estoy:

<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>

Pareja de problemas con la compatibilidad entre navegadores:

var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only works in Firefox

Además, IE no admite:

var file = $j(fileUpload.toString()).attr('files')[0];

Así que tengo que reemplazar con:

var element = 'id';
var element = document.getElementById(id);

Para soporte de IE.

Esto funciona en Firefox, Chrome, Safari (pero no codifica correctamente el archivo, o al menos después de que se ha publicado, el archivo no sale bien)

var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);

También

file.readAsArrayBuffer() 

¿Parece que solo se admite en HTML5?

Muchas personas sugirieron: http: //www.webtoolkit.info/javascript-base64.htm

¿Pero esto solo devuelve un error en el método UTF_8 antes de que codifique base64? (o una cadena vacía)

var encoded = Base64.encode(file); 

Respuestas a la pregunta(5)

Su respuesta a la pregunta