获取DirectoryEntry的完整路径

时间:2013-11-09 22:21:51

标签: google-chrome-extension filepath google-chrome-app

有没有人知道如何在Chrome打包应用中获取DirectoryEntry对象的完整路径,而没有任何代字号或其他快捷方式?

我正在写Google Chrome Packaged App。我的应用程序有一个按钮,用户可以使用chrome.fileSystem API选择目录。当目录选择返回到我的应用程序时,它由DirectoryEntry对象表示,该对象在File API中定义。该对象在控制台中如下所示:

DirectoryEntry {
  filesystem: DOMFileSystem
  fullPath: "/to_read"
  isDirectory: true
  isFile: false
  name: "to_read"
  __proto__: DirectoryEntry
}

我使用的是Windows,目录的完整路径是

C:\Users\David\Desktop\to_read

我想要一个可以返回该路径或其他东西的函数。不幸的是,我找到的最接近的是chrome.fileSystem.getDisplayPath,但返回以下内容:

~\Desktop\to_read

来自getDisplayPath的返回值对我没用,因为我想获取目录的全名(包括驱动器),所以我可以将它与我拥有的其他一些完整目录路径进行比较。

我尝试在toURL()上调用DirectoryEntry并返回一个空字符串。

关于我的项目:我想将iTunes库同步器编写为Chrome打包应用程序。 iTunes资料库XML文件包含file://localhost/D:/David/Music/Bob/Bob%20Album/01%20Bob.mp3等完整路径。用户将允许我的应用程序访问他的音乐文件夹,我希望能够告诉他是否允许我访问正确的文件夹。

3 个答案:

答案 0 :(得分:2)

唯一可用的完整路径是getDisplayPath返回的路径。

mediaGalleries API可能更适合您的项目:http://developer.chrome.com/apps/mediaGalleries.html#iTunes

答案 1 :(得分:1)

如果你有一个完整的路径path/to/the/file.mp3并且想要直接加载文件,那么你可以做到,但解决方案并不完美。使用chrome.mediaGalleries API询问用户保存音乐的位置(在您的情况下),然后您可以编写一个循环来检查其中一个路径存储库是否等于库。

例如,如果您从xml文件获得文件path/to/the/file.mp3并且您的库列表看起来像["D", "to", "Videos"],请编写一个函数来检查文件路径的每个组件是否为库。在这种情况下,您的代码将找到“to”,因此您可以启动使用"the/file.mp3"的第二个函数。

第二个函数必须使用给定的路径并查找图库是否包含正确的文件夹,最后是否包含正确的文件(使用此example by Google)。在您尝试使用库"the/file.mp3"查找to的情况下,您的循环必须找到名为"the"的目录,然后"file.mp3"(写一个递归函数),如果您找到文件打开它,否则回到第一个函数,如果你没有检查所有的画廊或所有路径的组件。

答案 2 :(得分:0)

这是目前(2014-01-10)不是Chrome的一项功能,但我已经建议并且他们正在努力:

https://code.google.com/p/chromium/issues/detail?id=322952