web-dev-qa-db-fra.com

Comment obtenir l'ID de fichier afin que je puisse effectuer un téléchargement d'un fichier à partir de l'API Google Drive sur Android?

Je travaille sur un projet Android Android et j'essaie d'utiliser l'API Google Drive et j'ai la plupart de cela fonctionne, mais je rencontre un problème dans la façon dont j'effectue un téléchargement.

Je ne trouve nulle part comment obtenir l'ID de fichier pour pouvoir effectuer le téléchargement. Afin de tester, j'ai récupéré tous les fichiers de mon compte de lecteur et les ai ajoutés à un tableau de liste, puis j'ai obtenu l'ID du premier fichier de la liste.

J'ai ensuite copié l'ID de fichier dans la commande pour télécharger le fichier et cela a fonctionné avec succès, mais je ne sais pas comment obtenir l'ID de fichier du fichier spécifique que je veux télécharger.

Voici le code que j'utilise pour télécharger le fichier.

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 est l'ID du fichier que je télécharge que j'ai récupéré lorsque j'ai fait une liste et sélectionné le premier fichier, mais comment puis-je dire que je veux télécharger File_1 et obtenir son ID pour ensuite le transmettre au service.get (). fonction d'exécution.

Fondamentalement, mon objectif final est dans mon application, je télécharge un fichier XML sur Google Drive, puis télécharge le fichier plus tard. Ce ne sera qu'un fichier et aura toujours le même nom. Est-ce que j'y vais tout de suite ou y a-t-il une meilleure façon de réaliser ce que j'essaie de faire?

19
Boardy

Eh bien, la première option à laquelle je pourrais penser est que vous pourriez envoyer une requête list avec paramètres de recherche pour votre fichier, comme title="File_1.xml" and fileExtension="xml". Il renverra soit une liste de fichiers vide (il n'y en a pas un correspondant aux critères de recherche), soit une liste avec au moins un fichier. Si ce n'est qu'un - c'est facile. Mais s'il y en a plus - vous devrez sélectionner l'un d'entre eux en fonction d'autres champs. N'oubliez pas que dans gdrive, vous pouvez avoir plusieurs fichiers avec le même nom. Donc, plus vous fournissez de paramètres de recherche, mieux c'est.

3
stan0

À mon avis, le moyen le plus simple et le plus rapide d'obtenir un ID de fichier Google Drive est de Google Drive sur le Web. Cliquez avec le bouton droit sur le nom du fichier et sélectionnez Obtenir le lien partageable. La dernière partie du lien est l'ID du fichier. Ensuite, vous pouvez annuler le partage.

34
RomRoc

Ce script enregistre tous les noms de fichiers et identifiants dans le lecteur:

// 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() );
  }
}  

De plus, la page " Files: list " a un formulaire à la fin qui répertorie les métadonnées de tous les fichiers du lecteur, qui peuvent être utilisées au cas où vous auriez besoin de quelques identifiants.

4
Juan Lanus

Une façon consiste à associer des propriétés uniques à votre fichier lors de la création.

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

puis créez une requête.

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

Toutes les propriétés du fichier (titre, etc.) déjà connues de vous peuvent aller ici + propriétés.

4
Amber Kulkarni

Cliquez avec le bouton droit de la souris sur le fichier dans votre Google Drive. Choisissez l'option pour obtenir un lien qui peut être partagé dans le menu. Vous verrez l'ID du fichier maintenant. N'oubliez pas d'annuler le partage.

2
Marijn As

Si vous connaissez le nom du fichier et si vous souhaitez toujours télécharger ce fichier spécifique, vous pouvez facilement obtenir l'ID et d'autres attributs pour votre fichier souhaité à partir de: https://developers.google.com/ drive/v2/reference/files/list (vers le bas, vous trouverez un moyen d'exécuter des requêtes). Dans le champ q, entrez title = 'your_file_name' et exécutez-le. Vous devriez voir un résultat apparaître juste en dessous et à l'intérieur il devrait y avoir un champ "id". C'est l'identifiant que vous recherchez.

Vous pouvez également jouer avec des paramètres supplémentaires à partir de: https://developers.google.com/drive/search-parameters

1
user2510474

L'idée initiale de Stan0 n'est pas une bonne idée. Il peut y avoir plusieurs fichiers portant le même nom. Implémentation très sujette aux erreurs. La deuxième idée de Stan0 est la bonne façon.

Lorsque vous téléchargez le fichier pour la première fois sur Google Drive, stockez son identifiant (dans SharedPreferences est probablement le plus simple) pour une utilisation ultérieure

c'est à dire.

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