Pliki multimedialne do wznowienia

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Jeśli pobierasz duży plik multimedialny z serwera, użyj funkcji wznawiania pobierania multimediów, aby pobrać fragment pliku. Biblioteki utworzone przez interfejs API Google zawierają wygodne metody interakcji z możliwością pobierania multimediów, które można wznowić.

Protokół pobierania multimediów do wznawiania jest podobny do protokołu wznowienia przesyłania multimediów opisanego w dokumentacji interfejsu API Dysku Google.

Szczegóły implementacji

Główne kategorie zainteresowań to MediaHttpDownloader i MediaHttpDownloaderProgressListener. Treści multimedialne są pobierane fragmentami, a ich rozmiar można konfigurować. Jeśli w żądaniu wystąpi błąd serwera, żądanie jest ponawiane.

Jeśli metody w bibliotekach wygenerowanych przez daną usługę obsługują pobieranie w dokumencie Discovery, zostanie utworzona wygodna metoda pobierania dla tych metod, które korzystają z outputStream. (Więcej informacji o pobieraniu multimediów za pomocą usługi wykrywania interfejsów API Google znajdziesz w artykule Pobieranie multimediów).

Przykład:

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

Możesz też używać tej funkcji bez bibliotek wygenerowanych przez daną usługę. Oto przykład.

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

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

Bezpośrednie pobieranie multimediów

Pobieranie multimediów do wznowienia jest domyślnie włączone, ale możesz je wyłączyć i korzystać z opcji bezpośredniego pobierania multimediów, np. jeśli pobierasz mały plik. Bezpośrednie pobieranie multimediów zostało wprowadzone w wersji 1.9.0-betaBiblioteki klienta interfejsu API Google dla języka Java.

Bezpośrednie pobieranie multimediów pobiera całą zawartość multimediów w jednym żądaniu HTTP, w sposób zgodny z możliwym do wznowienia protokołem pobierania multimediów, który może być pobierany w wielu żądaniach. Bezpośrednie pobieranie pozwala zmniejszyć liczbę żądań HTTP, ale zwiększa ryzyko niepowodzenia (np. awarii połączenia), które mogą wystąpić podczas pobierania dużych plików.

Korzystanie z usługi jest takie samo jak opisane powyżej oraz to, że MediaHttpDownloader wykonuje bezpośrednie pobieranie:

mediaHttpDownloader.setDirectDownloadEnabled(true);