2012-10-23 12 views
5

現在Googleドライブからファイルをダウンロードするアプリケーションを作成しようとしています。Googleドライブからファイルをダウンロードする方法

GoogleドライブSDKのドキュメントでは、System.IO.Streamオブジェクトを返す必要があるサンプルメソッドが見つかりました。

https://developers.google.com/drive/manage-downloads

は、そうするためには、各ファイルのダウンロードURLを必要とします。 ただし、このダウンロードURLは必ずしも返されません。これはなぜ誰にもアイデアはありますか?そして私はそれについて何ができますか?

更新:私はexportURLを使用できることを発見しました。これらはほとんど常にサービスによって返されます。

フォローアップの質問:特定のユーザーとしてアプリを実行するにはどうすればよいですか? =>アプリケーションがurlにリクエストを出した後、リクエストがタイムアウトになることがあります。ブラウザで同じURLを試してみると、魅力のように機能します。

ありがとう!

答えて

1

ダウンロードしようとしているファイルがネイティブのGoogleドキュメント形式の場合、ダウンロードリンクはありません。その場合は、exportLinksを探す必要があります。

あなたは最高のどの形式のスーツを選択する必要がありますので、あなたは、いくつかの輸出へのリンクがあります:docxファイルまたは例

+0

私はちょうど私の質問で同じことを入力していました:) 今私は別の問題があります。ときどきリクエストがタイムアウトし、エクスポートリンクがブラウザでなぜそれらを試しているのかという理由で、私はなぜその理由が分からないのでしょうか。 – Nielsm

+0

タイムアウトを経験したことはありません。しかし、ランダムなサーバーエラーが発生します。 Exponentialバックオフを実装する必要があります。ドライブAPIドキュメントの例があります。 – Jerome

+0

この回答を正しい答えとしてマークしました。ありがとう! – Nielsm

3

のための文書のODTが遅れかもしれないが、私はちょうど次のコードを使用してGoogleドライブからダウンロード:

var stream = service.HttpClient.GetStreamAsync(downloadUrl); 
     var result = stream.Result; 
     using (var fileStream = System.IO.File.Create(filePath)) 
     { 
      result.CopyTo(fileStream); 
     } 
+0

「service.HttpClient.GetStreamAsync(downloadUrl);」を取得するためにどのライブラリを追加する必要があるか教えてください。 –

+0

@Santarkantos、Sandoの例の「サービス」は、GoogleドライブAPIから提供されるDriveServiceのインスタンスです。 NuGetを使用してGoogle.Apis.Drive.v2を検索することで、ライブラリをプロジェクトに引き込むことができます。 – Scott

関連する問題