【发布时间】:2013-11-09 22:21:50
【问题描述】:
有谁知道如何在 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 的返回值对我没有用,因为我想获取目录的全名(包括驱动器),以便将其与我拥有的其他一些完整目录路径进行比较。
我尝试在DirectoryEntry 上调用toURL(),它返回一个空字符串。
关于我的项目的一些信息:我想编写一个 iTunes 库同步器作为 Chrome 打包应用程序。 iTunes 库 XML 文件包含完整路径,例如 file://localhost/D:/David/Music/Bob/Bob%20Album/01%20Bob.mp3。用户将允许我的应用访问他的音乐文件夹,我希望能够判断他是否允许我访问正确的文件夹。
【问题讨论】:
-
您是否考虑过使用
<input type="file"...代替? -
正如在下面的答案中指出的那样,mediaGalleries API 可能是您真正想要的。否则考虑提交feature request。我认为在平台中使用
chrome.fileSystem.getFullPath方法是合理的。 @ExpertSystem,文件输入在这里不起作用,因为它故意掩盖了完整路径。 -
@KenRockot:你说的“模糊”是什么意思?您不能使用
<fileInputElem>.value获取路径吗? -
不,因为
value的路径类似于C:\fakepath\foo.xml -
天啊 - 你是对的 - 我是盲人
标签: google-chrome-extension filepath google-chrome-app