日前,Mozilla 的 Arun Ranganathan 向 W3C 提交了一個草案,旨在推出一個 JavaScript API,讓 JavaScript 指令碼直接操作本地檔案,Firefox 的最新瀏覽器版本中已經對該 API 提供了大量的支援,不過出於安全考慮,該API 將只對本地檔案提供有限的訪問。
該 API 引入了一個 FileReader 對象,可以非同步載入本地檔案系統中的檔案,並允許開發人員為諸如
載入失敗,進度,載入完成等事件
分配回呼函數,它提供的方法可以從本地檔案中讀取文本或位元據,並通過一個
abort 方法隨時打斷操作。
FileReader 對象使用戶端的檔案訪問成為現實,使用者不必再象以前那樣首先將檔案上傳到伺服器才能處理,事實上,IE 和 Firefox 已經擁有一些非標準的方法訪問本地檔案,但這些方法並非標準 JavaScript 行為。
FileReader 對象並不需要特別的許可權,但出於顯然的安全考慮,直接使用檔案路徑進行訪問是不允許的,必須結合常規的 HTML file 對象,使用者點擊瀏覽之後,選擇本地檔案,JavaScript 再通過 DOM 引用該檔案並進行操作,這個機制使得該 API 相對安全一些,因為任何本地檔案的擷取都需要使用者的人工參與。
以下例子使用該 API 開啟一個本地檔案並將檔案內容顯示在一個 div 容器中,我們甚至可以在 div 上加上 contentEditable 屬性,使用者可以直接編輯檔案的內容,不過,該 API 並沒有提供將檔案內容寫回本地檔案的方法,因此你編輯的內容無法儲存。
隨著 JavaScript 引擎的效率在各大瀏覽器的顯著提高,JavaScript 可以做越來越多的事,本地檔案 API 的引入將讓很多有趣的功能成為現實。儘管該 API 並非多麼重大的技術革命,但它將拓展 Web 應用程式的視野,讓 Web 平台實現越來越多的功能。
本文來源:http://arstechnica.com/open-source/news/2009/11/w3c-publishes-draft-of-new-file-api-spec.ars