サーバーからサイズの大きなメディア ファイルをダウンロードする場合は、 再開可能なメディアのダウンロード: ファイル チャンクをチャンクごとにダウンロードします。Google API 生成されたライブラリには、再開可能な API とやり取りするための便利なメソッドが ダウンロードされます。
再開可能なメディアのダウンロード プロトコルは、再開可能なメディアのアップロードと類似しています。 プロトコルについては、 Google Drive API のドキュメント
実装の詳細
主なクラスは MediaHttpDownloader と MediaHttpDownloaderProgressListener です。 メディア コンテンツはチャンク形式でダウンロードされます。チャンクサイズは構成可能です。もし リクエストでサーバーエラーが発生した場合、リクエストは再試行されます。
サービス固有の生成されたライブラリのメソッドが ディスカバリ ドキュメント、 これらのメソッド用に、ダウンロードに便利なダウンロード メソッドが用意されており、 OutputStream。 (Google APIs Discovery Service でのメディア ダウンロードの使用について詳しくは、 メディアのダウンロード。
例:
class CustomProgressListener implements MediaHttpDownloaderProgressListener {
public void progressChanged(MediaHttpDownloader downloader) {
switch (downloader.getDownloadState()) {
case MEDIA_IN_PROGRESS:
System.out.println(downloader.getProgress());
break;
case MEDIA_COMPLETE:
System.out.println("Download is complete!");
}
}
}
OutputStream out = new FileOutputStream("/tmp/driveFile.jpg");
DriveFiles.Get request = drive.files().get(fileId);
request.getMediaHttpDownloader().setProgressListener(new CustomProgressListener());
request.executeMediaAndDownloadTo(out);
また、サービス固有の生成ライブラリなしでこの機能を使用することもできます。 以下に例を示します。
OutputStream out = new FileOutputStream("/tmp/Test.jpg");
MediaHttpDownloader downloader = new MediaHttpDownloader(transport, httpRequestInitializer);
downloader.setProgressListener(new CustomProgressListener());
downloader.download(requestUrl, out);
メディアの直接ダウンロード
再開可能なメディアのダウンロードはデフォルトで有効になっていますが、無効にして 直接メディア ダウンロード(小さなファイルのダウンロードなど)を行います。 メディアの直接ダウンロードは 1.9.0-beta Java 用 Google API クライアント ライブラリのバージョンです。
直接メディア ダウンロードでは、1 回の HTTP リクエストでメディア コンテンツ全体がダウンロードされます。 これとは異なり、再開可能メディア ダウンロード プロトコルは、 できます。直接ダウンロードを行うと、HTTP リクエスト数は削減されますが、 障害(接続障害など)が発生する可能性が高くなる 大量のデータのダウンロードが伴います。
使用方法は上記の説明に加えて、次の内容です 伝える MediaHttpDownloader 直接ダウンロードするには:
mediaHttpDownloader.setDirectDownloadEnabled(true);