wake-up-neo.com

Wie erhalte ich die Datei-ID, damit ich eine Datei von der Google Drive-API auf Android herunterladen kann?

Ich arbeite an einem Android) - Projekt und versuche, die Google Drive-API zu verwenden. Ich habe das meiste davon, habe jedoch ein Problem bei der Durchführung eines Downloads.

Ich kann nirgendwo finden, wie ich die Datei-ID erhalte, damit ich den Download durchführen kann. Zum Testen habe ich alle Dateien in meinem Laufwerkskonto abgerufen und sie einem Listenarray hinzugefügt und dann die ID für die erste Datei in der Liste erhalten.

Ich habe dann die Datei-ID in den Befehl zum Herunterladen der Datei kopiert und dies hat erfolgreich funktioniert, aber ich habe keine Ahnung, wie ich die Datei-ID der spezifischen Datei, die ich herunterladen möchte, erhalten soll.

Unten ist der Code, mit dem ich die Datei herunterlade.

private void downloadFile()
{
    Thread thread = new Thread(new Runnable() {

        @Override
        public void run() {
            try 
            {
                com.google.api.services.drive.model.File file = service.files().get("0B-Iak7O9SfIpYk9zTjZvY2xreVU").execute();
                //FileList file = service.files().list().execute();
                //List<com.google.api.services.drive.model.File> fileList = file.getItems();
                //com.google.api.services.drive.model.File fileItem = fileList.get(0);
                //Log.d("FileID" , fileItem.getId());
                //Log.d("Count", "Retreived file list");
                if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0)
                {
                    HttpResponse resp = service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl())).execute();
                    InputStream inputStream = resp.getContent();
                    writeToFile(inputStream);
                }
            } 
            catch (IOException e)
            {
                Log.e("WriteToFile", e.toString());
                e.printStackTrace();
            }
        }
    });
    thread.start();
}

0B-Iak7O9SfIpYk9zTjZvY2xreVU ist die Datei-ID der Datei, die ich heruntergeladen habe und die ich bei der Erstellung einer Liste abgerufen und die erste Datei ausgewählt habe. Wie kann ich jedoch sagen, dass ich die Datei_1 herunterladen und ihre ID abrufen möchte, um sie dann an service.get weiterzuleiten () .execute Funktion.

Grundsätzlich ist mein Endziel in meiner App, ich lade eine XML-Datei auf Google Drive hoch und lade sie später herunter. Es wird nur eine Datei sein und immer den gleichen Namen haben. Mache ich das sofort oder gibt es einen besseren Weg, um das zu erreichen, was ich versuche?

19
Boardy

Nun, die erste Option, die mir in den Sinn kommt, ist, dass Sie eine list -Anforderung mit Suchparametern für Ihre Datei senden, wie title="File_1.xml" and fileExtension="xml". Es wird entweder eine leere Liste von Dateien zurückgegeben (es gibt keine, die den Suchkriterien entspricht), oder es wird eine Liste mit mindestens einer Datei zurückgegeben. Wenn es nur einer ist, ist es einfach. Wenn es jedoch mehr gibt, müssen Sie eines davon basierend auf einigen anderen Feldern auswählen. Denken Sie daran, dass Sie in gdrive mehr als eine Datei mit demselben Namen haben können. Je mehr Suchparameter Sie angeben, desto besser.

3
stan0

Meiner Meinung nach ist der einfachste und schnellste Weg, eine Google Drive-Datei-ID zu erhalten, über Google Drive im Web. Klicken Sie mit der rechten Maustaste auf den Dateinamen und wählen Sie Get shareable link. Der letzte Teil des Links ist die Datei-ID. Dann können Sie die Freigabe abbrechen.

34
RomRoc

Dieses Skript protokolliert alle Dateinamen und IDs auf dem Laufwerk:

// Log the name and id of every file in the user's Drive
function listFiles() {
  var files = DriveApp.getFiles();
  while ( files.hasNext() ) {
    var file = files.next();
    Logger.log( file.getName() + ' ' + file.getId() );
  }
}  

Außerdem enthält die Seite " Files: list " am Ende ein Formular, in dem die Metadaten aller Dateien im Laufwerk aufgeführt sind. Dieses Formular kann verwendet werden, wenn Sie nur einige IDs benötigen.

4
Juan Lanus

Eine Möglichkeit besteht darin, Ihrer Datei während der Erstellung eindeutige Eigenschaften zuzuweisen.

properties = "{ \
    key='somekey' and \
    value='somevalue'
}"

erstellen Sie dann eine Abfrage.

query = "title = " + "\'" + title + "\'" + \
        AND + "mimeType = " + "\'" + mimeType + "\'" + \
        AND + "trashed = false" + \
        AND + "properties has " + properties

Alle Ihnen bereits bekannten Dateieigenschaften (Titel usw.) finden Sie hier + Eigenschaften.

4
Amber Kulkarni

Klicken Sie mit der rechten Maustaste auf die Datei in Ihrem Google Drive. Wählen Sie die Option, um einen Link zu erhalten, der über das Menü freigegeben werden kann. Sie sehen jetzt die Datei-ID. Vergessen Sie nicht, die Freigabe rückgängig zu machen.

2
Marijn As

Wenn Sie den Namen der Datei kennen und diese Datei immer herunterladen möchten, können Sie die ID und andere Attribute für die gewünschte Datei auf einfache Weise von folgender Adresse abrufen: https://developers.google.com/ drive/v2/reference/files/list (unten finden Sie eine Möglichkeit, Abfragen auszuführen). Geben Sie in das Feld q title = 'your_file_name' ein und führen Sie es aus. Sie sollten einige Ergebnisse sehen, die direkt darunter angezeigt werden und in denen sich ein "id" -Feld befinden sollte. Das ist die ID, die Sie suchen.

Sie können auch mit zusätzlichen Parametern experimentieren: https://developers.google.com/drive/search-parameters

1
user2510474

Eine Standardidee ist keine gute Idee. Es können mehrere Dateien mit demselben Namen vorhanden sein. Sehr fehleranfällige Implementierung. Stan0s zweite Idee ist der richtige Weg.

Wenn Sie die Datei zum ersten Mal auf Google Drive hochladen, speichern Sie ihre ID (in SharedPreferences wahrscheinlich am einfachsten) für die spätere Verwendung

dh.

file= mDrive.files().insert(body).execute();      //initial insert of file to google drive

whereverYouWantToStoreIt= file.getId(); //now you have the guaranteed unique id 
                                        //of the file just inserted. Store it and use it 
                                        //whenever you need to fetch this file
1
Ian