При загрузке файла мне нужно дать пользователю возможность:
- загрузить файл из файловой системы
- захватить фотографию с камеры
Если просто использовать input type="file"
, такое поведение реализуется большинством пар браузер-устройство, но не всеми ними (подробности см. В этом ответе: https://stackoverflow.com/a/33414310). Те пары, которыене реализуйте захват фотографий, вероятно, только для компьютерных устройств, но я не уверен на 100% в этом (возможно, некоторые браузеры на компьютерных устройствах реализуют захват фотографий, возможно, некоторые браузеры на некомпьютерных устройствах этого не делают).
Чтобы восполнить этот недостаток на таких устройствах, я использую библиотеку, чтобы иметь:
- one
input type="file"
для загрузки файла из файловой системы, + навернякаустройства: для записи файла с камеры - одна специальная кнопка, вызывающая библиотеку для захвата фотографии
Эта библиотека выполняет другие задачи и прекрасно интегрируется в мою систему загрузки. Также я использую еедолгое время Теперь, чтобы изменить это может привести к регрессии. В заключение: я бы предпочел сохранить его.
С другой стороны, для устройств, которые позволяют захватывать фотографии, эта библиотека выполняет меньше, чем захват фотографий с устройства. Например, он не предлагает возможность переключения между передней и задней камерами.
Поэтому для захвата фотографий мне нужно использовать эту библиотеку только для устройств, которые не поддерживаютзахват фотографии.
Другими словами: мне нужно определить, реализует ли устройство захват фотографий с помощью input type="file"
Iнашел много ответов, чтобы определить, является ли браузер мобильным или нет, но никто не удовлетворяет.
Самая интересная тема была: Как проверить, поддерживает ли браузер.
К сожалению, это решение не является идеальным: не потому, что свойство «захват» недоступно для элемента ввода, браузер и устройство не предоставляют возможность сделать снимок с помощьюэлемент ввода.
Это означает только то, что невозможно принудительно захватить фотографию с камеры вместо загрузки файла из файловой системы. Но это не значит, что захват с камеры невозможен. Однако, прочитав документацию, я обнаружил, что она тесно связана ...
... но после некоторых тестов я нашел контрпример: на планшете Samsung Firefox сообщает, что свойство capture не доступнодля ввода, но браузер все-таки предлагает сделать снимок через элемент ввода.
Любая помощь? :)