2013-02-24 11 views
11

Androidプロジェクトで作業しており、GoogleドライブAPIを利用しようとしています。それは働いていますが、私はどのようにダウンロードを実行するかに問題があります。ファイルIDを取得してAndroidのGoogleドライブAPIからファイルをダウンロードできるようにするには

ダウンロードを実行できるようにファイルIDを取得する方法がわかりません。テストするために、ドライブアカウントのすべてのファイルを取得してリストアレーに追加し、リストの最初のファイルのIDを取得しました。

ファイルIDをコマンドにコピーしてダウンロードしましたが、正常に動作しましたが、ダウンロードしたい特定のファイルのファイルIDを取得する方法がわかりません。

以下は、ファイルのダウンロードに使用しているコードです。

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

は、私はリストを行なったし、最初のファイルを選択したときに私が取得し、私がダウンロードしたファイルのファイルIDですが、どのように私は、私は、File_1をダウンロードして、合格にそのIDを取得したいと言うことができますこれをservice.get()。execute関数に渡します。

私の最終目標はアプリ内にあります。XMLファイルをGoogleドライブにアップロードしてから、後でファイルをダウンロードします。これは1つのファイルに過ぎず、常に同じ名前になります。私はすぐにそれについてやっていますか、私がやろうとしていることを達成する良い方法がありますか?

これは意味があると思いますが、どんな助けでも大歓迎です。

おかげ

答えて

2

まあ私は考えることができ、最初のオプションを使用すると、title="File_1.xml" and fileExtension="xml"のように、あなたのファイルのためのsearch parameterslistリクエストを送ることができるということです。それは、空のファイルリストを返すか(少なくともserach基準に一致するものはない)、少なくとも1つのファイルを含むリストを返します。唯一のものなら簡単です。しかし、それ以上あれば、他のフィールドに基づいてそれらの1つを選択する必要があります。 gdriveでは、同じ名前のファイルが2つ以上あることに注意してください。したがって、より多くの検索パラメータを提供すればするほど良いでしょう。

+0

あなたの助けていただきありがとうございます。アンドロイドにすべてのファイルのリストを取得し、それらのすべてを繰り返して、必要なファイルを見つけてIDを取得できるようにする作業がたくさんあるようです。ファイル名を指定するだけで、IDを取得します。ありがとう、私はそれを試してみましょう – Boardy

+0

あなたは実際にそれを行うにはAndroidを教えていないが、Googleのサーバー。このようにして、サーバーはあなたの仕事をしています(適切なファイルを(潜在的に長いファイルのリストから)フィルタリングします)。さらに、ネットワーク経由で転送されるデータが少なくなります。 – stan0

+0

さて、私はあなたのポイントを見て、ちょうどかなり遅くて長い風に見えました。ファイルIDが私のテストのためのものであることを見つけるためにリストを作成しました。質問に言及すると数秒で完了しました。ドライブアカウントに多数のファイルがあります – Boardy

1

スタンダードなアイデアは良い考えではありません。同じ名前のファイルが複数存在する可能性があります。非常にエラーが発生しやすい実装。 Stan0の第2のアイデアは正しい方法です。

あなたが最初のすなわち後に使用するために(SharedPreferencesでおそらく最も簡単です)グーグル・ドライブ・ストアのIDに

をファイルをアップロードします。

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

ファイルの名前を知っているし、常にその特定のファイルをダウンロードしたい場合、あなたは簡単にご希望のファイルのためのIDやその他の属性を得ることができる場合:https://developers.google.com/drive/v2/reference/files/list(底部に向かって、あなたがしますクエリを実行する方法を見つける)。 qフィールドにtitle = 'your_file_name'と入力して実行します。あなたはすぐ下にいくつかの結果が表示され、その中に "id"フィールドがあるはずです。それはあなたが探しているIDです。このスクリプトは、ドライブ内のすべてのファイル名とIDをログに記録しますhttps://developers.google.com/drive/search-parameters

2

あなたはまた、から追加のパラメータで遊ぶことができます

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

をまた、「Files: list」ページは、フォームを持っていますドライブ内のすべてのファイルのメタデータをリストしたエンドで、必要な場合に使用できますが、いくつかのIDで使用できます。

3

1つの方法は、作成中にファイルに固有のプロパティを関連付けることです。

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

次に、クエリを作成します。

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

あなたが既に知っているすべてのファイルプロパティ(タイトルなど)は、ここに+プロパティを追加できます。

0

GoogleドライブのファイルIDを取得する最も簡単で迅速な方法は、Googleドライブのウェブからファイルを右クリックして[共有可能なリンクを取得]をクリックすることです。リンクの最後の部分はファイルIDです。共有をキャンセルすることができます。

関連する問題