0

有谁知道如何DirectoryEntry在没有任何波浪线或其他快捷方式的情况下获取 Chrome 打包应用程序中对象的完整路径?

我正在编写Google Chrome 打包应用程序。我的应用程序有一个按钮,用户可以在其中使用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

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

我尝试调用toURL()DirectoryEntry,它返回一个空字符串。

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

4

3 回答 3

2

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

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

于 2013-11-11T02:57:05.000 回答
1

如果您有完整路径path/to/the/file.mp3并且想直接使用 tis 加载文件,您可以这样做,但解决方案并不完美。使用chrome.mediaGalleriesAPI询问用户将他的音乐保存在哪里(在您的情况下),然后您可以编写一个循环来检查路径存储库之一是否等于画廊。

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

第二个函数必须使用给定的路径并查找库是否包含正确的文件夹,最后是正确的文件(使用Google 的这个示例)。如果您尝试"the/file.mp3"使用图库查找,to您的循环必须找到一个名为"the"then的目录"file.mp3"(编写一个递归函数),如果您找到文件打开它,否则如果您没有检查所有内容,请返回第一个函数画廊或所有路径的组件。

于 2013-11-10T18:24:31.783 回答
0

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

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

于 2014-01-11T06:59:00.710 回答