Fortsetzbare Mediendownloads

Wenn du eine große Mediendatei von einem Server herunterlädst, verwende resumable media download, um die Datei Stück für Stück herunterzuladen. Die Google API Die generierten Bibliotheken enthalten praktische Methoden für die Interaktion mit fortsetzbaren Medien-Download.

Das Downloadprotokoll für fortsetzbare Medien ähnelt dem Upload von fortsetzbaren Medien -Protokoll, das in den Dokumentation zur Google Drive API

Implementierungsdetails

Die wichtigsten Klassen, die Sie interessieren, sind MediaHttpDownloader und MediaHttpDownloaderProgressListener. Medieninhalte werden in Blöcken heruntergeladen und die Blockgröße ist konfigurierbar. Wenn ein in einer Anfrage auftritt, wird die Anfrage wiederholt.

Wenn Methoden in den dienstspezifischen generierten Bibliotheken den Download im Discovery-Dokument, dann ein wird für diese Methoden eine bequeme Download-Methode entwickelt, OutputStream. (Weitere Informationen zur Verwendung des Mediendownloads mit dem Google APIs Discovery Service finden Sie unter Mediendownload)

Beispiel:

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

Sie können diese Funktion auch ohne dienstspezifische generierte Bibliotheken verwenden. Hier ein Beispiel:

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

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

Direkter Mediendownload

Der Download von fortsetzbaren Medien ist standardmäßig aktiviert, Sie können ihn aber deaktivieren und direkter Mediendownload, z. B. wenn Sie eine kleine Datei herunterladen. Der direkte Mediendownload wurde im 1.9.0-beta Version der Google API-Clientbibliothek für Java.

Beim direkten Mediendownload werden alle Medieninhalte in einer HTTP-Anfrage heruntergeladen, Im Gegensatz zum Downloadprotokoll für fortsetzbare Medien, das in mehreren -Anfragen. Ein direkter Download reduziert die Anzahl der HTTP-Anfragen, erhöht die Wahrscheinlichkeit von Fehlern (z. B. Verbindungsfehlern), die auftreten können mit großen Downloads.

Die Verwendung entspricht der Beschreibung oben, plus Folgendes: Anruf, der sagt, MediaHttpDownloader für direkte Downloads:

mediaHttpDownloader.setDirectDownloadEnabled(true);