El navegador de Android actualiza la página después de seleccionar el archivo a través del elemento de entrada


Tengo una página web móvil que incluye un elemento de entrada de tipo 'file', para permitir a los usuarios subir archivos de imagen a un servidor. La página funciona bien en iOS, y en un Nexus 4 (Android 4.2.1) en el navegador Chrome.

Cuando uso un Samsung S3 (Android 4.0.4) con el navegador predeterminado haciendo clic en el botón 'Elegir archivo' abre el cuadro de diálogo de selección de imagen como se esperaba, sin embargo, después de elegir una imagen y cerrar el cuadro de diálogo, la página web se actualiza, por lo que pierdo la imagen que se seleccionó. ¿Alguien más ha visto este comportamiento? Alguna sugerencia para solucionarlo?

El elemento de entrada que estoy usando es bastante estándar, y se ve así:

<input id="addPhoto" type="file" accept="image/*"/>

Incluso sin el atributo 'accept' obtengo el mismo problema.

Author: codebox, 2013-01-11

3 answers

Echa un vistazo a este problema:

Https://code.google.com/p/android/issues/detail?id=53088

Básicamente, lo que parece estar sucediendo es esto:

  • Android no tiene suficiente memoria disponible para el selector de archivos o la aplicación de cámara.

  • Libera memoria cerrando el navegador

  • Después de que el selector de archivos/cámara se cierra, el navegador se abre de nuevo, lo que desencadena una actualización de página, lo que representa la elección de todo el archivo ejercicio inútil.

Me parece que esto está más allá del control de cualquier solución basada en navegador pero me encantaría que se demuestre lo contrario en esta suposición.

 22
Author: Douwe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-22 12:18:46

Estoy teniendo el mismo problema en un teléfono con Andriod 2.3.6. Uno de mis colegas no tiene el problema en su teléfono (no puede recordar lo que se está ejecutando). Sugirió que podría ser un problema de memoria. Si el teléfono no tiene suficiente memoria disponible, el navegador podría verse obligado a recargar la página después de seleccionar la imagen, lo que frustra el propósito. Todavía no he podido confirmar que este es el problema, pero mi teléfono tiene considerablemente menos memoria disponible que su.

 2
Author: lehket,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-28 21:40:03

Puedes probar este método jQuery: http://blueimp.github.com/jQuery-File-Upload /

También se ve bien.

Uploadify también parece prometedor: http://www.uploadify.com/

Aquí hay una demostración de ello: http://www.uploadify.com/demos /

Creo que el problema no es su código, sino el navegador de Android predeterminado que está utilizando.

 -7
Author: turnt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-14 18:19:24