2011-10-12 16 views
9

(soy nuevo en la programación web, así que disculpas por cualquier falta de conocimiento rudimentario.)¿Qué usar en lugar de FileReader para Safari?

Mi página permite a un usuario seleccionar un archivo que a continuación se lee clientside & se muestra en un cuadro de texto en la página. La forma más fácil que encontré para hacer esto fue utilizar un objeto FileReader, que funciona bien en Firefox y Chrome.

Esto no funciona en Safari (todavía), entonces ¿qué debo hacer?

//When the eventlistener detects a change in the input file... 
var file = evt.target.files[0] 
var reader = new FileReader(); 
reader.onload = function (e){document.getElementById('data').value = e.target.result}; 
reader.readAsText(file); 

Notas pertinentes:

  • estoy trabajando con Safari para Windows
  • En este momento la página es local, como es el archivo para leer. Chrome tuvo problemas con esto hasta que utilicé la bandera --allow-file-access-from-files

Respuesta

6

Lamentablemente, la única respuesta que se me ocurre engullirá algo de ancho de banda extra.

En primer lugar, utilice algo como if (typeof FileReader !== "undefined" o Modernizr para seguir su flujo normal para los navegadores que SOPORTEN FileReader. De lo contrario, envíe el archivo a través de AJAX a algún script del lado del servidor que haga eco de los contenidos.

Por lo tanto, para los navegadores compatibles, puede ahorrar algo de ancho de banda y para los navegadores que no cumplen con los requisitos, debe tomar uno para el equipo.

+0

Tal vez esto podría satisfacer su necesidad sin embargo: https://github.com/dcneiner/Downloadify – Quickredfox

+0

Gracias! Se sentía tonto, pero no sabía cuáles eran las posibilidades alternativas (supongo que eso sucede cuando todavía eres nuevo en todo!) – Emma

+0

Me gustó mucho tu respuesta, parece una forma receptiva de manejar estas situaciones. Gracias. –

Cuestiones relacionadas