Saat Anda mengunduh file media berukuran besar dari server, gunakan download media yang dapat dilanjutkan untuk mendownload potongan file berdasarkan potongan. Google API library yang dihasilkan berisi metode praktis untuk berinteraksi dengan download media.
Protokol download media yang dapat dilanjutkan mirip dengan upload media yang dapat dilanjutkan , yang dijelaskan dalam Dokumentasi Google Drive API.
Detail implementasi
Class utama yang diminati adalah MediaHttpDownloader dan MediaHttpDownloaderProgressListener. Konten media diunduh dalam potongan, dan ukuran potongan dapat dikonfigurasi. Jika ditemukan kesalahan server dalam permintaan, maka permintaan tersebut dicoba lagi.
Jika metode di library yang dihasilkan khusus layanan mendukung download di Dokumen penemuan, lalu metode download yang mudah dibuat untuk metode ini yang memerlukan OutputStream. (Untuk informasi selengkapnya tentang cara menggunakan download media dengan Google API 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. Unduhan media langsung diperkenalkan di 1.9.0-beta Library Klien Google API untuk Java.
Download media langsung mengunduh seluruh konten media dalam satu permintaan HTTP, seperti alih-alih protokol download media yang dapat dilanjutkan, yang dapat mengunduh dalam beberapa permintaan. Melakukan download langsung mengurangi jumlah permintaan HTTP tetapi meningkatkan kemungkinan kegagalan (seperti kegagalan koneksi) yang dapat terjadi dengan jumlah download yang besar.
Penggunaannya sama dengan yang dijelaskan di atas, ditambah dengan panggilan yang memberi tahu MediaHttpDownloader untuk melakukan download langsung:
mediaHttpDownloader.setDirectDownloadEnabled(true);