最近在做一個公司的保險信息處理系統項目,開發微信端瀏覽器訪問的HTML5的頁面,頁面中有一個<input id="input" type="file"/>標簽,iOS直接就支持吊起相機拍照或是相冊選擇,但android中不支持吊起相機拍照,只能吊起相冊選擇,網上的帖子說是因為android屏蔽了文件上傳功能還是怎么的,沒看明白。此篇博文記錄如何解決這一問題,使得android也可以直接吊起相機拍照。
在查資料的之后,總結了一下用input調用相機和相冊功能的方法,之前沒有深入了解過,現在整理一下:
不需要特殊環境,使用input標簽 type值為file,可以調用系統默認的照相機、相冊、攝像機、錄音功能。先上代碼:
accept表示打開的系統文件目錄;
capture表示的是系統所捕獲的默認設備,camera:照相機;camcorder:攝像機;microphone:錄音。
如果不加上capture,則只會顯示相應的,例如上述三種依次是:拍照或圖庫,錄像或圖庫,錄像或拍照或圖庫,加上capture之后不會調用圖庫。
其中還有一個屬性multiple,支持多選,當支持多選時,multiple優先級高於capture,所以只用寫成:<input type="file" accept="image/*" multiple>就可以,可以在手機上測試一下。
判斷ios,如果是ios就去掉capture屬性.
var file = document.querySelector('input'); if (getIos()) { file.removeAttribute("capture"); } function getIos() { var ua=navigator.userAgent.toLowerCase(); if (ua.match(/iPhone\sOS/i) == "iphone os") { return true; } else { return false; } }