File and Directory Entries API
檔案和目錄條目 API 提供了一種方式來處理使用者透過表單輸入或拖放操作提供的目錄和檔案列表。它是 File API 的一個更高階的版本,File API 允許你處理單個檔案。它最初旨在支援一個完整的虛擬檔案系統,但現在只支援對使用者提供的資料進行讀取操作。
有關此 API、File System API 和 File API 之間的比較,請參閱 與其它檔案相關 API 的關係。
訪問檔案系統
在當前規範草案中,有兩種方式可以訪問檔案系統。
- 在處理拖放操作的
drop事件時,你可以呼叫DataTransferItem.webkitGetAsEntry()來獲取被拖放項的FileSystemEntry。如果結果不是null,那麼它就是一個被拖放的檔案或目錄,你可以使用檔案系統呼叫來處理它。 HTMLInputElement.webkitEntries屬性可以讓你訪問當前選定檔案的FileSystemFileEntry物件,但這僅在它們被拖放到檔案選擇器時才有效(Firefox bug 1326031)。如果HTMLInputElement.webkitdirectory為true,則<input>元素將變成一個目錄選擇器,並且你可以獲取每個選定目錄的FileSystemDirectoryEntry物件。
History
最初的檔案系統 API 是為了讓瀏覽器能夠支援訪問使用者儲存裝置上的沙盒化虛擬檔案系統而建立的。標準化該規範的工作早在 2012 年就已停止,但到那時,Google Chrome 已經包含了該 API 的自有實現。隨著時間的推移,許多流行的網站和 Web 應用程式開始使用它,而且通常不提供任何回退到標準 API 的方法,甚至在使用前也不檢查 API 是否可用。Mozilla 則選擇實現其他可以解決許多相同問題的 API,例如 IndexedDB;有關更多見解,請參閱博文 Why no FileSystem API in Firefox?。
因此,許多流行的網站在 Chrome 以外的瀏覽器上無法正常工作。為了解決這個問題,Google API 中能夠達成共識的功能被標準化為檔案和目錄條目 API,然後在其他瀏覽器中實現。
介面
檔案和目錄條目 API 包含以下介面
FileSystem-
表示一個檔案系統。
FileSystemEntry-
表示檔案系統中單個條目的基本介面。它由表示檔案或目錄的其他介面實現。
FileSystemFileEntry-
表示檔案系統中的單個檔案。
FileSystemDirectoryEntry-
表示檔案系統中的單個目錄。
FileSystemDirectoryReader-
透過呼叫
FileSystemDirectoryEntry.createReader()建立,此介面提供了讀取目錄內容的功能。
其他介面的擴充套件
DataTransferItem.webkitGetAsEntry()-
返回一個基於
FileSystemEntry的物件,表示選定檔案在其檔案系統中的條目。這通常是FileSystemFileEntry或FileSystemDirectoryEntry物件。 File.webkitRelativePath-
返回
FileURL 的相對路徑。 HTMLInputElement.webkitdirectory-
一個布林值,表示
webkitdirectory屬性。如果為true,則檔案系統選擇器介面僅接受目錄而不是檔案。 HTMLInputElement.webkitEntries-
描述當前選定的檔案或目錄。
規範
| 規範 |
|---|
| File and Directory Entries API # api-domfilesystem |
瀏覽器相容性
載入中…