Как определить, поддерживает ли браузер загрузку файлов? (Мобильный + Рабочий стол)

Я разрабатываю приложение для мобильных и настольных браузеров. Мне интересно, есть ли способ определить, поддерживает ли браузер загрузку файлов. Я ищу специально для обнаружения функций, а не обнаружения браузера. Есть ли способ узнать?

Со стороны сервера или со стороны клиента все в порядке.

Спасибо

4 ответа

Решение

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>

Возможно, вам будет интересно прочитать эту статью о текущем типе ввода = поддержка файлов на мобильном телефоне и о том, как его обнаружить: http://viljamis.com/blog/2012/file-upload-support-on-mobile/ (обнаружение в настоящее время проверено на работу с ~120 различными комбинациями мобильных браузеров и мобильных ОС).

По сути, мы просто используем обнаружение, подобное Modernizr, но используем обнаружение UA в качестве резервной копии, чтобы отфильтровать те мобильные браузеры, которые ложно сообщают о поддержке (на самом деле, похоже, нет другого способа надежного обнаружения, чем использование обоих). обнаружение функций и обнаружение браузера).

Вы можете использовать Modernizr Framework с forms-fileinput расширение. Попробуйте.

if Modernizr.fileinput
  // you can use file inputs

Посетите страницу загрузки Modernizr и проверьте forms-fileinput расширение (разверните раздел "Неосновные обнаружения").

Modernizr теперь поддерживает проверку поддержки загрузки файлов.

От: Как лучше всего проверить, может ли пользователь загружать файлы?

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

Если вас беспокоит размер этой библиотеки, вы всегда можете получить один компонент за раз - http://modernizr.com/download/... или просто скопировать код, который они используют: 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;
Другие вопросы по тегам