input[type=file]標簽 本地文件、拍照、錄像 上傳的兼容性問題


移動端 input[type=file]標簽 本地文件、拍照、錄像 上傳的兼容性問題: https://blog.csdn.net/sinat_35538827/article/details/85997205 或 https://blog.csdn.net/weixin_34101229/article/details/88696293

問題描述:移動端上傳文件,可以選擇  本地文件、拍照、錄像、錄音。但是他們不是同時可以選擇的,不同的手機還是有差異的。

一、input[type=file] 屬性:https://blog.csdn.net/sinat_35538827/article/details/85997205

  三個屬性:

    1、accept - 規定可提交的文件類型。

    2、capture - 系統所捕獲的默認設備。camera(照相機),camcorder(攝像機),microphone(錄音)

    3、mutiple - 支持多選。當支持多選時,multiple優先級高於capture。

二、不同環境中  input[type=file] 不同屬性對應的效果:(主要的運行環境:ios瀏覽器、ios微信網頁、安卓瀏覽器、安卓微信網頁)

  1、<input type="file">

ios瀏覽器 ios微信 安卓瀏覽器(左邊小米手機,右邊魅族手機) 安卓微信

 

 

(和ios瀏覽器上一樣的)

 

 

 

 

 

 (不同是安卓系統,本身就有差異)

小米手機:直接進入文件系統,沒有彈出選項

魅族手機:直接進入文件系統,沒有彈出選項

(兩者的行為是一樣的)

  2、<input type="file" capture="camera">   【一般都是,直接調用對應的設備 進行獲取文件。也有手機會不一樣,類似下面的魅族手機】

ios瀏覽器 ios微信 安卓瀏覽器 安卓微信
直接進入拍照或錄像的功能里

直接進入拍照或錄像的功能里

(和ios瀏覽器是一樣的)

小米手機:直接進入拍照功能,但是不能錄像

魅族手機:彈出選項,如下

 

小米手機:直接進入文件系統,沒有彈出選項

魅族手機:直接進入文件系統,沒有彈出選項

(兩者的行為是一樣的)

  3、<input type="file" accept="image/*">

     

ios瀏覽器 ios微信 安卓瀏覽器(小米、魅族) 安卓微信

(和ios瀏覽器是一樣的)

 

(兩者的行為是一致的) 

(兩者的行為是一致的)

 

 

4、<input type="file" accept="image/*" capture="camcorder">

  accept 和 capture 兩者沖突,以accept為准

 

 

個人得出結論:

  ios上基本表現一致,且根據屬性設置。可以實現定制,拍照和錄像  是  都有還是  選擇其一

  安卓機上就有很大差異,大部分的安卓機都是不能實現 彈出窗上同時有  拍照和錄像 功能的。 如果要實現 拍照和錄像功能都可以的話,彈出選擇的組件使用H5自己寫。選擇選項后,js對 input[type=file] 標簽的屬性修改。如,

  點擊自定義的拍照選項后,直接跳到拍照功能(不彈出原生的選項組件)。

 

三、小程序中的H5的 input[type=file] 和 微信H5頁面的表現也是不一樣的。

  安卓微信小程序中 要調用 拍照或錄像 必須設置  capture="camera" 屬性,且直接進入拍照或 錄像中。

 

ios微信小程序 安卓微信小程序
拍照錄像上傳文件可以正常定制

沒有選項彈出,要么直接到文件列表,要么只能拍照或錄像

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM