Devam ettirilebilir Medya İndirmeleri

Büyük bir medya dosyasını bir sunucudan indirdiğinizde, parça parça indirmek için devam ettirilebilir medya indirme özelliğini kullanın. Google API ile oluşturulan kitaplıklar, devam ettirilebilir medya indirme işlemiyle etkileşimde bulunmak için kolaylık yöntemleri içerir.

Devam ettirilebilir medya indirme protokolü, Google Drive API dokümanlarında açıklanan devam ettirilebilir medya yükleme protokolüne benzer.

Uygulama ayrıntıları

Başlıca ilgi sınıfları MediaHttpDownloader ve MediaHttpDownloaderprogressListener'dır. Medya içeriği parçalar halinde indirilir ve parça boyutu yapılandırılabilir. Bir istekte sunucu hatasıyla karşılaşılırsa istek yeniden denenir.

Hizmete özel olarak oluşturulan kitaplıklardaki yöntemler Discovery dokümanında indirmeyi destekliyorsa bu yöntemler için Çıkış Akışı'nda alınan uygun bir indirme yöntemi oluşturulur. (Google API Discovery Hizmeti ile medya indirme özelliğini kullanma hakkında daha fazla bilgi için Medya indirme bölümüne bakın.)

Örneğin:

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

Bu özelliği hizmete özel kitaplıklar olmadan da kullanabilirsiniz. Aşağıda bununla ilgili bir örnek verilmiştir:

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

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

Doğrudan medya indirme

Devam ettirilebilir medya indirme özelliği varsayılan olarak etkindir ancak bunu devre dışı bırakıp doğrudan medya indirme özelliğini kullanabilirsiniz (örneğin, küçük bir dosya indiriyorsanız). Doğrudan medya indirme özelliği, Java için Google API İstemci Kitaplığı'nın 1.9.0-beta sürümünde kullanıma sunuldu.

Doğrudan medya indirme, birden çok istekte indirilebilen devam ettirilebilir medya indirme protokolünün aksine tüm medya içeriğini tek bir HTTP isteğinde indirir. Doğrudan indirme yapmak, HTTP isteklerinin sayısını azaltır ancak büyük indirmelerde oluşabilen başarısızlıklar (bağlantı hataları gibi) olasılığını artırır.

Kullanım, yukarıda açıklananlarla aynı olmakla birlikte MediaHttpDownloader için doğrudan indirme işlemlerini yapmasını isteyen aşağıdaki çağrıdır:

mediaHttpDownloader.setDirectDownloadEnabled(true);