2014-09-16 9 views
6

Ho un input(type="file") su una pagina web.Il tipo di file è una stringa vuota quando si carica dal browser nativo Android

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

Io uso jQuery per prelevare il file in questo modo:

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

ho bisogno di controllare se e.target.files[0].type partite "image.*" modello, così faccio: var matches = e.target.files[0].type.match('image.*');

Questo funziona bene nella maggior parte dei i casi, ma quando l'applicazione viene eseguita dal browser nativo di Android, lo e.target.files[0].type è una stringa vuota. Questo succede se seleziono un'immagine memorizzata sul dispositivo. Se prendo un'immagine con la fotocamera e.target.files[0].type è "image/jpeg".

Qualcuno ha riscontrato questo problema prima?

+0

Riesci a scrivere il violino? 'files [0] .type' generalmente fornisce il tipo di file con precisione. Controlla anche di non aver selezionato alcun file non valido/corrotto per ogni evenienza. –

risposta

0

Come ho aggiunto un commento già, ho cercato di fare con casi d'uso frammento di codice di seguito:

<!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. Quando il nome del file è sample.jpeg e l'immagine è un'immagine valida, tutto ha funzionato bene. Il risultato è stato image/jpeg

  2. Quando il nome del file è sample (rimosso l'estensione del file ma il contenuto dell'immagine è ancora valido), il risultato era una stringa vuota.

  3. Quando l'immagine è corrotta (modificandola nel blocco note, è possibile provare altri modi) e il nome del file era sample.jpeg, il tipo di immagine era ancora risultato come image/jpeg.

  4. Ripetuto il caso-3 con l'immagine ridenominata sample, il tipo di immagine è risultato di nuovo come stringa vuota.

Potrebbe essere il tuo caso era uno di loro.