file 類型的 <input> 除了調起系統的文件選擇框外,還可通過指定 capture 屬性來現場拍照或錄制。配合 accept 屬性,可實現更加便捷的文件獲取。
比如想要錄制一段視頻,可以這么寫:
<input type="file" accept="video/*" capture />
點擊之后直接打開攝像頭進行拍攝,而不是彈起文件選擇。
`capture` 屬性演示
如果沒有這個 capture 屬性,則需要先借助 MediaDevices.getUserMedia() 獲取用戶的相機權限,然后再通過 MediaRecorder API 進行錄制,處理得到的文件。
同樣,對於拍照的情況也非常方便了,可以這么寫:
<input type="file" accept="image/*" capture="camera" />
<!-- or -->
<input type="file" accept="image/*;capture=camera"/>
更多示例可參見 W3C 文檔中示例部分。
瀏覽器兼容性
從 Can I Use - HTML Media Capture 的統計來看,支持得還不是很好。但嘗試后發現 iOS 只能錄制視頻,即使指定 accept="audio/*" 也是調起視頻錄制,而不是錄音。

