要讓<input type="file" accept="image/*">
在移動端點選時預設觸發相機拍照功能,你需要結合capture
屬性。 具體方法如下:
<input type="file" accept="image/*" capture="camera">
解釋:
<input type="file" accept="image/*">
: 這是標準的HTML檔案上傳元素,accept="image/*"
限定了只能選擇圖片檔案。capture="camera"
: 這個屬性是關鍵,它提示瀏覽器優先使用相機進行捕捉。
不同平臺上的行為:
- Android (Chrome, Firefox, Samsung Internet): 會直接開啟相機應用。
- iOS (Safari, Chrome): 會彈出一個選項,允許使用者選擇拍照或從相簿中選擇。 雖然不能強制只顯示相機,但
capture="camera"
會將相機選項放在首位,使其成為預設選項。 - 桌面瀏覽器: 通常會開啟檔案選擇對話方塊,和沒有
capture
屬性時的行為一樣。 一些瀏覽器可能會提供攝像頭選項,但這取決於瀏覽器的實現。
更精細的控制 (iOS):
如果你希望在iOS上更精確地控制捕捉的型別(例如照片或影片),可以使用更具體的capture
值:
capture="user"
: 前置攝像頭 (自拍)capture="environment"
: 後置攝像頭capture="camera"
: 照片或影片 (iOS 10.3+) - 系統會根據裝置的功能提供合適的選項. 如果沒有capture
屬性或值是camera
,iOS會顯示照片和影片的選項。capture="video"
: 影片錄製capture="photo"
: 拍照
示例:
<label for="cameraInput">拍照:</label>
<input type="file" id="cameraInput" accept="image/*" capture="camera">
<label for="selfieInput">自拍:</label>
<input type="file" id="selfieInput" accept="image/*" capture="user">
<label for="videoInput">錄影:</label>
<input type="file" id="videoInput" accept="video/*" capture="video">
一些需要注意的點:
- 瀏覽器相容性: 雖然
capture
屬性得到了廣泛支援,但在較舊的瀏覽器版本中可能會有不同的行為。 最好測試你的目標平臺和瀏覽器。 - 使用者體驗: 明確地告知使用者他們將要拍照或錄影,例如使用標籤或按鈕文字。
- 許可權: 瀏覽器會請求訪問攝像頭和麥克風的許可權。 確保你的應用處理了許可權請求和拒絕的情況。
透過結合accept
和capture
屬性,你可以建立一個使用者友好的移動端檔案上傳體驗,讓使用者輕鬆地使用相機捕捉影像或影片。