Problema con el stock El navegador escoge las fotos de la Galería

Estoy trabajando en una página web para cargar fotos desde un dispositivo móvil, usando la etiqueta <input type="file" accept="image/*"/> . Esto funciona maravillosamente en el iphone y en el cromo en el androide, pero donde estamos corriendo en problemas es con el navegador androide de acciones.

El problema surge cuando seleccionas un archivo de tu galería (funciona bien cuando usas la cámara para tomar una foto). Y lo hemos reducido aún más para ver que el tipo MIME de datos no está disponible cuando se toma de la galería en el navegador de stock (las fotos a continuación muestran los primeros 100 caracteres de la URL de datos que se está cargando. , Pero sin el tipo MIME no podemos saber con certeza cómo solucionarlo. Vea el código a continuación para ver cómo se procesan las imágenes.

¿Cómo se puede renderizar una imagen sin el tipo? Mejor aún, ¿alguien sabe por qué el tipo no está disponible en el navegador android de acciones?

EDITAR

En primer lugar, estos no son la misma imagen, se tomaron casi al mismo tiempo, y ese no es el problema, por eso los datos son diferentes (El tipo MIME no aparece en ninguna imagen en el navegador de valores, por lo que no es el problema .

Actualizar

Confirmé que el tipo MIME es el problema insertando image / jpeg en el navegador de valores donde está en cromo. Por desgracia, no tenemos forma de garantizar que va a ser jpeg, por lo que de nuevo realmente no puede hacerlo de esa manera

  _readInputFile: function (file, index) { var w = this, o = this.options; try { var fileReader = new FileReader(); fileReader.onerror = function (event) { alert(w._translate("There was a problem opening the selected file. For mobile devices, some files created by third-party applications (those that did not ship with the device) may not be standard and cannot be used.")) $('#loadingDots').remove(); return false; } fileReader.onload = function (event) { var data = event.target.result; //alert(data.substring(0,100)); //var mimeType = data.split(":")[1].split(";")[0]; alert("Load Image"); //I get to this point $('#' + w.disp.idPrefix + 'hiddenImages').append($('<img />', { src: data, id: "dummyImg" + index, load: function(){ var width = dummy.width(); var height = dummy.height(); $('#dummyImg' + index).remove(); alert("Render"); // I don't get here var resized = w._resizeAndRenderImage(data, null, null, biOSBugFixRequired, skewRatio, width, height); alert("Image Rendered"); // I don't get here } })); } fileReader.readAsDataURL(file); } catch (e) { } } 

Cromo
Cromo

Navegador de Stock
Navegador de Stock

Dado que el problema está probablemente relacionado con el navegador, y realmente no se puede arreglar el navegador (podría informar un error a Google), sugeriría tomar un camino diferente.

Echa un vistazo aquí: En Node.js, dado un URL, ¿cómo puedo comprobar si es un jpg / png / gif?

Ver los comentarios de la respuesta aceptada, que sugiere un método para comprobar el tipo de archivo utilizando el flujo de archivos. Estoy bastante seguro de que esto funcionaría en JavaScript implementado por el navegador y no sólo en Node.js.

  • Origen nulo no está permitido por Access-Control-Allow-Origin.:1 en la vista web android?
  • Determinar y vincular eventos de clic o "toque"
  • Cómo comprobar la existencia de un archivo en la guía telefónica con un mensaje telefónico
  • Cómo obtener la url de streaming de la emisora ​​de radio en línea
  • ResponsiveVoice.js no funciona correctamente con el compilador Phonegap
  • Generar y guardar una lista de ParseObjects dentro de un Parse.Cloud.httpRequest en una función de la nube
  • Vista web de Android, cargando archivo javascript en la carpeta de activos
  • Desactivar autocompletar en Android
  • Uso de LogCat para la depuración USB android del navegador
  • En móvil, ¿cómo puedo obtener "enter" para enviar un formulario dentro de un tipo = "número" de entrada?
  • Phonegap Error - "No se puede leer la propiedad 'captura' de undefined" en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.