【公告】網站目前停止所有的課程訂閱服務,原有學員權益不受影響,造成不便還請見諒,我們正在打造更多課程以及圖書,包含 Python 為主的課程主題,未來將會合併且擴充目前的課程內容,提供全新課程訂閱服務,感謝學員的支持。
【公告】《Entity Framework 實務精要》 絕版優惠學習活動,是針對最後一批少量書籍絕版的短期特別活動,只提供 20 個名額(剩 5 名),教學影片要在今年暑假過後才會重新開放訂閱,並沒有提供之前單獨購書的讀者,還請見諒, 如果您需要教學影片,屆時再請參與,也感謝讀者學員的支持,我們正在開發更多的教學內容,歡迎與我們一起努力。
《Entity Framework 實務精要》 絕版優惠學習活動》

關於 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 。

沒有留言: