2017-10-03 2 views
0

Ich versuche, alle Dateien in einem übergeordneten Verzeichnis erstellt zu greifen. Das übergeordnete Verzeichnis enthält viele Unterverzeichnisse, gefolgt von Dateien in diesen Verzeichnissen.Suche Dateien rekursiv mit Google Drive Rest

parent 
--- sub folder1 
    --- file1 
    --- file2 

Derzeit bin packte ich alle IDs von Unterordnern und eine Abfrage wie q Konstruktion: ‚subfolder1id‘ in Eltern oder ‚subfolder2id‘ in Eltern die Liste der Dateien zu finden. Dann gebe ich diese in Chargen aus. Wenn ich 100 Ordner habe, erstelle ich 10 Suchanfragen für eine Batchgröße von 10.

Gibt es eine bessere Möglichkeit, die Dateien mit Google Drive Rest API, die mir alle Dateien mit einer Abfrage erhalten?

Antwort

1

Hier ist ein answer zu Ihrer Frage.

Gleiche Idee von Ihrem Szenario:

folderA____ folderA1____folderA1a 
     \____folderA2____folderA2a 
        \___folderA2b 

Es 3 alternative Antworten, die ich denke, Ihnen eine Idee von bekommen.

Alternative 1. Rekursion

Die Versuchung, die Kinder ordnerA, für alle Kinder zur Liste wäre, die Ordner sind, rekursiv ihre Kinder auflisten, spülen, wiederholen. In einer sehr kleinen Zahl von Fällen, könnte dies der beste Ansatz sein, aber für die meisten, hat es die folgenden Probleme: -

  • Es verbraucht woefully Zeit einen Server Rundfahrt für jeden Unter Ordner zu tun. Dies hängt natürlich von der Größe Ihres Baumes ab, wenn Sie also garantieren können, dass Ihre Baumgröße klein ist, könnte es OK sein.

Alternative 2. Die gemeinsame Mutter

Dies funktioniert am besten, wenn alle Dateien von Ihrer App erstellt werden (dh. Sie drive.file Umfang verwenden). Erstellen Sie, wie oben in der Ordnerhierarchie , einen Dummy-übergeordneten Ordner namens say "MyAppCommonParent". Als erstellen Sie jede Datei als Kind seines bestimmten Ordners, Sie auch machen es ein Kind von MyAppCommonParent. Dies wird viel mehr intuitiv, wenn Sie daran denken, Ordner als Etiketten zu denken. Sie können nun einfach alle Descendants abrufen, indem Sie einfach MyAppCommonParent in parents abfragen.

Alternative 3. Folders erste

starten durch alle Ordner zu bekommen. Ja, alle von ihnen. Sobald Sie alle im Speicher haben, können Sie durch ihre Elterneigenschaften crawlen und Ihre Baumstruktur und Liste der Ordner-IDs erstellen. Sie können dann eine einzige files.list?q='folderA' in parents or 'folderA1' in parents or 'folderA1a' in parents.... Mit dieser Technik können Sie alles in zwei http Anrufe erhalten.

Alternative 2 ist die effektivste, aber funktioniert nur, wenn Sie Kontrolle der Dateierstellung haben. Alternative 3 ist im Allgemeinen effizienter als Alternative 1, aber es kann bestimmte kleine Baumgrößen geben, wo 1 am besten ist.

+0

Ich denke, Alternative 3 ist, was ich tue, aber Alternative 2 ist eine großartige Lösung. Danke vielmals :) –

Verwandte Themen