2013-03-18 95 views
3

我想創建一個HTML5應用程序,能夠訪問大量的文件。因此,我查看了FileSystem API以便能夠從本地文件系統讀取文件。HTML5文件系統API進行Android的瀏覽器訪問到SD卡

我做的PoC使用PhoneGap的文件API,所有的預期一樣,我是能夠生產使用在Chrome桌面文件系統API進行了類似的結果...

但是我面臨着一個嚴重的問題,而我可以在桌面訪問我的文件系統,但無法從Android Chrome訪問SD卡。我試圖用這個演示:

http://html5-demos.appspot.com/static/filesystem/filer.js/demos/index.html

我可以在桌面選擇我的本地系統文件:我的圖片,等...但我不能做同樣與Android瀏覽器

如何我可以在Android Chrome中訪問設備文件系統/ sdcard嗎?

回答

4

this article on HTML5 Rocks

要記住,這個文件系統是沙箱,這意味着一個Web應用程序無法訪問其他應用程序的文件,這一點很重要。這也意味着您無法將文件讀取/寫入用戶硬盤上的任意文件夾(例如「我的圖片」,「我的文檔」等)。

文件系統API的目的是讓你的應用程序來創建和操作,將您的應用程序的用法之間依然存在的文件。它不能用於暴露沙箱外的任意文件。

另外,該File API可以用來閱讀,雖然不是從整個系統的修改,文件。但是,File API不能用於讀取系統上的任意文件。它的用法基於HTML <input type=file>標記,其中用戶必須明確輸入要讀取的文件。

上述適用於Android中的Chrome因爲它沒有桌面瀏覽器相同的運行的應用程序,讓你的運氣,除非用戶願意使用輸入授予你想要的文件的訪問。但是,您提到您也嘗試使用PhoneGap的PoC。 PhoneGap File API雖然主要作爲HTML5實現的包裝器,但有一些細微的差別,主要在於它允許訪問SD卡上的任意文件。當使用API​​調用window.requestFileSystem()時,您的成功回調將具有一個參數FileSystem對象,其中root屬性是對/ sdcard文件夾的引用。這可以用來遍歷你的SD卡並在其中的任何地方創建FileReader和FileWriters。

+0

嗨馬特,我也讀過這篇文章,我明白這是一個沙盒的FS。但是,在桌面上,我可以從「我的圖片」和「我的文檔」等等中選擇文件。您可以嘗試使用我發佈的鏈接。在Android中,我無法正確選擇目錄,但我可以選擇文件。我所做的PhoneGAP PoC能夠讀取SD卡上的目錄。我能夠創建DirectoryReader沒有太多問題。我能夠使用FileSystem API在Chrome Desktop中複製該PoC,但我無法使用Android Chrome版本進行操作。這是非常令人沮喪的 – Astronaut 2013-03-18 22:35:23

+1

我明白了。只是爲了多一點澄清,是你有你在所有Android上是無法選擇目錄中的問題,或發現有與DirectoryReader一個問題是選擇一個目錄後?此外,您發佈的代碼演示是否在所有平臺上進行此測試? – MattDavis 2013-03-20 15:26:16

+0

我無法在Android中選擇目錄。演示在所有平臺上都是一樣的。 – Astronaut 2013-03-20 15:59:04