0

DirectoryEntryチルダやその他のショートカットなしで、Chrome パッケージ アプリ内のオブジェクトのフル パスを取得する方法を知っている人はいますか?

私はGoogle Chrome Packaged Appを書いています。私のアプリには、ユーザーがchrome.fileSystem APIを使用してディレクトリを選択できるボタンがあります。ディレクトリの選択がアプリに戻ってくると、それはFile APIDirectoryEntryで定義されたオブジェクトによって表されます。オブジェクトはコンソールで次のように表示されます。

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. ユーザーは私のアプリに彼の音楽フォルダーへのアクセスを許可します。私は、彼が私に正しいフォルダーへのアクセスを許可したかどうかを知りたいと考えています。

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を使用して、ユーザーが自分の音楽をどこに保存するか (あなたの場合) を尋ねると、パス リポジトリの 1 つがギャラリーと等しいかどうかを確認するループを作成できます。

たとえばpath/to/the/file.mp3、xml ファイルからファイルを取得し、ギャラリー リストが のよう["D", "to", "Videos"]になっている場合、ファイルのパスの各コンポーネントがギャラリーかどうかを確認する関数を記述します。この場合、コードは「to」を見つけるので、を使用する 2 番目の関数を起動できます"the/file.mp3"

2 番目の関数は、指定されたパスを使用して、ギャラリーに適切なフォルダーと最終的に適切なファイルが含まれているかどうかを確認する必要があります ( Google のこの例を使用してください)。"the/file.mp3"ギャラリーで検索しようとしている場合to、ループはその名前のディレクトリを検索する必要があり"the"ます"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 に答える