關於 HTML5 的檔案系統(Filesystem API)

基於安全的理由,以 HTML 為基礎的網頁,只能透過 file 型態的 <input> 標籤讀取使用者電腦上的檔案,不過為了支援完整功能的檔案系統, HTML5 進一步透過沙盒(Sandbox)機制提供相關的實作,這一組規格稱為 Filesystem API。沙箱是基於安全考量的一種隔離機制,定義一塊封閉區域,執行未受信任或是有安全疑慮的程式,檔案系統則是在此隔離區域中運作。

針對沙盒區域進行任何檔案作業之前,必須先要求一個檔案系統物件以執行資料檔案的存取維護,這可以藉由調用 window.requestFileSystem() 方法來完成,如下式:

window.requestFileSystem(
    PERSISTENT/TEMPORARY,
    size,
    successHandler,
    errorHandler
);                           

第一個參數表示所要使用的檔案系統類型,指定 PERSISTENT 或是 TEMPORARY 其中之一,如果指定前者 PERSISTENT ,則檔案系統會一直保存,除非使用者刪除,後者 TEMPORARY 則是依瀏覽器而定,基於某些磁碟空間利用的因素,其中的資料可能被刪除。

第 2 個參數 size 是應用程式需要的檔案儲存空間,以 long 型態表示的位元組(bytes)長度。
接下來兩個參數是完成檔案系統作業調用之後的回呼函式,其中的 successHandler 於成功取得檔案系統之後呼叫,而 errorHandler 則是要求作業失敗,發生問題時被呼叫。

requestFileSystem() 調用成功執行其中的 successHandler() 函式,接下來就可以透過此函式的參數引用取得檔案系統的根目錄,如下式:

function successHandler(fs) {
fs.root // 取得根目錄           
}

fs 是包含整個檔案系統參照的物件,而 fs.root 則讓我們取出檔案系統的根目錄,從這個根目錄開始,我們就能開始操作沙盒中的檔案了。

目前只有 Chrome 支援  Filesystem  API 。

沒有留言: