Download Media yang Dapat Dilanjutkan

Saat Anda mendownload file media besar dari server, gunakan download media yang dapat dilanjutkan untuk mendownload file per potongan. Library yang dihasilkan Google API berisi metode praktis untuk berinteraksi dengan download media yang dapat dilanjutkan.

Protokol download media yang dapat dilanjutkan ini mirip dengan protokol upload media yang dapat dilanjutkan, yang dijelaskan dalam dokumentasi Google Drive API.

Detail implementasi

Class minat utama adalah MediaHttpDownloader dan MediaHttpDownloaderProgressListener. Konten media didownload dalam beberapa potongan, dan ukuran potongan dapat dikonfigurasi. Jika terjadi error server dalam permintaan, permintaan tersebut akan dicoba lagi.

Jika metode di library yang dihasilkan khusus layanan mendukung download di Dokumen penemuan, metode download yang mudah akan dibuat untuk metode ini yang menggunakan OutputStream. (Untuk informasi selengkapnya tentang penggunaan download media dengan Google APIs Discovery Service, lihat Download media.)

Contoh:

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);

Anda juga dapat menggunakan fitur ini tanpa library yang dihasilkan khusus layanan. Berikut ini contohnya:

OutputStream out = new FileOutputStream("/tmp/Test.jpg");

MediaHttpDownloader downloader = new MediaHttpDownloader(transport, httpRequestInitializer);
downloader.setProgressListener(new CustomProgressListener());
downloader.download(requestUrl, out);

Download media langsung

Download media yang dapat dilanjutkan diaktifkan secara default, tetapi Anda dapat menonaktifkannya dan menggunakan download media langsung, misalnya jika Anda mendownload file berukuran kecil. Download media langsung diperkenalkan dalam Library Klien Google API versi 1.9.0-beta untuk Java.

Download media langsung akan mendownload seluruh konten media dalam satu permintaan HTTP, bukan protokol download media yang dapat dilanjutkan, yang dapat mendownload dalam beberapa permintaan. Melakukan download langsung akan mengurangi jumlah permintaan HTTP, tetapi meningkatkan kemungkinan kegagalan (seperti kegagalan koneksi) yang dapat terjadi dengan download yang besar.

Penggunaannya sama dengan yang dijelaskan di atas, ditambah panggilan berikut yang memberi tahu MediaHttpDownloader untuk melakukan download langsung:

mediaHttpDownloader.setDirectDownloadEnabled(true);