2014-09-16 5 views
6

Ich habe eine input(type="file") auf einer Webseite.Dateityp ist leere Zeichenfolge beim Hochladen von Android nativen Browser

<input type='file' name="file" accept="image/*" /> 

Ich benutze jQuery die Datei wie folgt zu greifen:

$('input').on('change', function(e) { 
    console.log(e.target.files[0]); 
}); 

Ich muss überprüfen, ob e.target.files[0].type Streichhölzer "image.*" Muster, so dass ich tun: var matches = e.target.files[0].type.match('image.*');

Dies funktioniert in den meisten die Fälle, aber wenn die Anwendung von Android nativen Browser ausgeführt wird, ist die e.target.files[0].type leere Zeichenfolge. Dies passiert, wenn ich ein auf dem Gerät gespeichertes Bild auswähle. Wenn ich ein Bild mit der Kamera e.target.files[0].type mache, ist "image/jpeg".

Hat jemand dieses Problem schon einmal erlebt?

+0

Können Sie Geige schreiben? 'files [0] .type 'liefert im Allgemeinen den Dateityp genau. Überprüfen Sie auch, ob Sie eine ungültige/beschädigte Datei ausgewählt haben, nur für den Fall. –

Antwort

0

Wie ich bereits Kommentar hinzugefügt habe, habe ich versucht, Anwendungsfälle mit folgendem Code-Schnipsel zu machen:

<!DOCTYPE html> 
<html lang="en"> 

<head> 
    <meta charset="utf-8" /> 
    <title>Image Test</title> 
</head> 

<body> 
    <form method="POST" enctype="multipart/form-data"> 
    <input type="file" accept="image/*" onchange="previewAndUploadFile(event)"/><br/> 
    <img id="imagePreview" width="200" height="200"/> 
    <div id="imageType"></div> 
    </form> 
    <script type="text/javascript"> 
    function previewAndUploadFile(event) { 
     var type = document.getElementById("imageType"); 
     var file = event.target.files[0]; 
     try { 
      var reader = new FileReader() 
      reader.onload = function() { 
       var preview = document.getElementById("imagePreview"); 
       preview.src = reader.result; 
      } 
      reader.readAsDataURL(file); 
      type.innerHTML = file.type; 
     } catch(e){ 
      type.innerHTML = "Invalid image."; 
     } 
    } 
    </script> 
</body> 
</html> 
  1. Wenn der Dateiname sample.jpeg und Bild ist gültiges Bild, alles hat gut funktioniert. Das Ergebnis war image/jpeg

  2. Wenn der Dateiname sample (entfernt die Dateierweiterung, aber Bildinhalt ist immer noch gültig), das Ergebnis war eine leere Zeichenfolge.

  3. Wenn das Bild beschädigt ist (indem sie sie in Notepad bearbeiten, können Sie andere Wege versuchen) und Dateiname war sample.jpeg, Bildtyp wurde in Folge noch als image/jpeg.

  4. Wiederholt die Fall-3 mit Bild umbenannt in sample, der Bildtyp resultierte als leere Zeichenfolge erneut.

Vielleicht war Ihr Fall einer von ihnen.

Verwandte Themen