2010-11-21 51 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