這段時間經常看到開發者在反覆詢問同一個問題,為什麼透過設定src屬性,不能播放本地的媒體檔案?例如video.src=”D:test.mp4”。
這是因為瀏覽器中的JavaScript不能直接直接存取本機資源(例如檔案系統,鏡頭,麥克風等),除非事先得到了使用者的允許。瀏覽器之所以進行該限制也是必要的,試想一下,如果JavaScript能夠肆無忌憚的訪問本地的文件系統,那麼竊取用戶隱私數據就變得輕而易舉了,當用戶訪問網絡上的某個網頁時,不知不覺中自己機器上保存的信用卡卡號,密碼,公司的秘密文件等隱私文件或許已經被惡意的JavaScript程式上傳到了遠方的伺服器上,這對用戶來說是不可容忍的。
在得到使用者允許後我們還是可以播放本地檔案的,下面介紹一個方法。
在頁面中插入一個input節點並指定type為file,如果需要播放多個文件,可以新增屬性multiple。註冊檔案節點被更新時的回呼函數,在回呼函數中呼叫URL.createObjectURL函數來取得剛選擇檔案的url,然後把該url設定為audio或video的src值即可。
程式碼實例如下: