Как определить, поддерживает ли браузер загрузку файлов? (Мобильный + Рабочий стол)
Я разрабатываю приложение для мобильных и настольных браузеров. Мне интересно, есть ли способ определить, поддерживает ли браузер загрузку файлов. Я ищу специально для обнаружения функций, а не обнаружения браузера. Есть ли способ узнать?
Со стороны сервера или со стороны клиента все в порядке.
Спасибо
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;