2012-02-16 11 views
9

Zajmuję się tworzeniem aplikacji dla przeglądarek mobilnych i stacjonarnych. Zastanawiam się, czy istnieje jakikolwiek sposób, aby wykryć, czy przeglądarka obsługuje przesyłanie plików. Szukam specjalnie do wykrywania funkcji, a nie wykrywania przeglądarki. Czy jest jakiś sposób, aby się tego dowiedzieć?Jak wykryć, czy przeglądarka obsługuje przesyłanie plików? (Mobile + Desktop)

Strona po stronie serwera lub po stronie klienta jest w porządku.

Dzięki

Odpowiedz

10

po stronie klienta javascript:

<input type="file" name="file" value="" id="fileUploadField1">  
<script type="text/javascript" charset="utf-8"> 
    if (document.getElementById('fileUploadField1').disabled) 
     { document.write('your device does not allow uploads');  } 
     else 
     { document.write('your device does allow uploads');  } 
</script> 
+0

działa świetnie dzięki –

+0

aby zobaczyć na własne oczy, przejdź do tego z iDevice.! http://jsfiddle.net/Q2b8E/embedded/result/ –

+0

Takie podejście daje fałszywych alarmów na dość kilka urządzeń - zobacz artykuł z odpowiedzią Viljami: – codebox

5

Można użyć Modernizr ramy z forms-fileinput przedłużenia. Spróbuj.

if Modernizr.fileinput 
    // you can use file inputs 

Odwiedź Modernizr download page i sprawdzić rozszerzenie forms-fileinput (rozwiń "Non-core wykrywa" sekcji).

+0

Czy mógłbyś podać w swojej odpowiedzi jakiś przykład użycia zarówno Modernizera, jak i rozszerzenia API pliku? Na przykład, gdy rozszerzenie doda test pliku danych, jak go użyć? –

+0

Spróbowałem tego w pośpiechu, ale po tym, jak zacząłem trochę więcej badać, zdałem sobie sprawę, że jest to świetna odpowiedź, a głupi stackoverflow nie pozwoli mi zagłosować. Niestety :( –

+0

w porządku. 1 downvote mnie nie boli. Przynajmniej odpowiedź może pomóc w jakiś sposób. – Raptor

7

Możesz być zainteresowany, aby przeczytać ten artykuł o aktualnej input type = obsługę plików na telefon komórkowy i jak go wykryć: http://viljamis.com/blog/2012/file-upload-support-on-mobile/ (detekcja jest obecnie testowany, aby pracować na ~ 120 różnych kombinacji przeglądarki mobilnej/mobilnego systemu operacyjnego).

Zasadniczo używamy podobnego wykrywania, jak robi Modernizr, ale używamy wykrywania UA jako kopii zapasowej, aby odfiltrować te przeglądarki mobilne, które fałszywie zgłaszają wsparcie (tak naprawdę nie ma żadnego innego sposobu na wykrycie go w sposób wiarygodny niż przy użyciu obu tych funkcji wykrywania wykrywania funkcji).

+0

Pozdrawiam, to jest o wiele lepsze rozwiązanie niż zaakceptowana odpowiedź i poleciłbym każdemu, kto patrzy na to pytanie, na rozważenie skorzystania z tego rozwiązania, a nie zaakceptowanego. –

1

Modernizr obsługuje teraz sprawdzanie, czy przesyłanie plików jest obsługiwane.

Od: What is the best way to check if user can upload files?

if(Modernizr.fileinput) { 
    //file input available! 
} else { 
    //No file input :(
} 

Jeśli martwisz się o wielkość tej biblioteki, zawsze można dostać jeden składnik naraz - http://modernizr.com/download/ ... albo po prostu skopiować kod których używają: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/forms/fileinput.js

if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)) { 
    return false; 
} 
var elem = createElement('input'); 
elem.type = 'file'; 
return !elem.disabled; 
Powiązane problemy