2010-11-21 53 views
2

Firefox 3.6讓我們將一個目錄放到某個元素上(使用拖放API)並使用FileAPI處理這些文件。如何與目錄一起工作?JavaScript FileAPI:迭代目錄?

Mac OS X Finder將某些目錄顯示爲文件(.app,.tmbundle,.abbu,...)。在大多數情況下,這是美好的。在通過文件和DND-API與瀏覽器交互的情況下,它不是。最終用戶無法區分真實文件和my-addressbook-backup.abbu等文件類型。

JavaScript UI因此必須能夠識別目錄結構。如果它不能穿越結構,它必須相應地通知用戶。

關於如何完成任何想法?

編輯:

我可以看到讓JS遍歷目錄時所產生的(潛在的)問題。我沒有要求目錄遍歷本身(雖然我不會綁定能夠)。我在談論Foo.app被視爲一個文件(就像用戶通過Finder.app看到的那樣),但實際上是一個目錄(就像在Terminal.app中查看它一樣)。

File API目前不提供任何遍歷機制。因此,addressbook-dump.abbu中更深的嵌套文件將無法訪問。是否有任何想法使這成爲可能?

否則,我不得不告訴我的OSX用戶對他們的地址簿文件進行存檔(例如ZIP)並「上傳」該zip(我實際上可以用JS讀取)。雖然這是一種解決方法,但不是解決方案。

+0

http://www.html5rocks.com/en/tutorials/file/filesystem看起來很有前途 – rodneyrehm 2011-10-20 21:58:59

回答

3

從理論上講,您所描述的可以通過FileReader API來實現。例如, this demo讀取一個.zip文件(點擊加載photos.zip),將其內容解壓縮,然後 顯示它包含給用戶的圖片列表。

對於一般的文件夾拖放操作,Chrome/WebKit存在兩個漏洞:1,2。當這些人得到修復時,您可以將一個文件夾從操作系統拖到<input type="file" webkitdirectory>並遍歷其所有層次結構。要查看webkitdirectory,請在Chrome中查看this demo

+0

ZIP示例(已在我的問題中提到)是一個非常糟糕的解決方法。直到現在我還不知道Filesystem API。不能等待:) – rodneyrehm 2011-10-20 22:18:41