Nội dung nghe nhìn có thể tiếp tục tải xuống

Khi bạn tải một tệp nội dung nghe nhìn có dung lượng lớn xuống từ máy chủ, hãy sử dụng tính năng tải nội dung nghe nhìn tiếp nối để tải tệp đó xuống theo từng phần. Các thư viện do Google API tạo chứa các phương thức thuận tiện để tương tác với quá trình tải nội dung nghe nhìn có thể tiếp tục xuống.

Giao thức tải nội dung nghe nhìn xuống cũng tương tự như giao thức tải nội dung nghe nhìn tiếp nối lên, được mô tả trong Tài liệu về API Google Drive.

Thông tin triển khai

Các lớp được quan tâm chính là MediaHttpDownloaderMediaHttpDownloaderProgressListener. Nội dung đa phương tiện được tải xuống theo từng đoạn và có thể định cấu hình kích thước phân đoạn. Nếu gặp lỗi máy chủ trong một yêu cầu, thì yêu cầu đó sẽ được thử lại.

Nếu các phương thức trong thư viện được tạo dành riêng cho dịch vụ hỗ trợ tải xuống trong Tài liệu khám phá, thì một phương thức tải xuống thuận tiện sẽ được tạo cho những phương thức này để lấy OutputStream. (Để biết thêm về cách sử dụng tính năng tải nội dung nghe nhìn xuống bằng Dịch vụ khám phá API của Google, hãy xem phần Tải nội dung nghe nhìn xuống.)

Ví dụ:

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

Bạn cũng có thể sử dụng tính năng này mà không cần có các thư viện được tạo dành riêng cho dịch vụ. Dưới đây là ví dụ:

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

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

Tải nội dung nghe nhìn trực tiếp xuống

Tính năng tải nội dung nghe nhìn tiếp nối được bật theo mặc định. Tuy nhiên, bạn có thể tắt tính năng này và sử dụng tính năng tải nội dung nghe nhìn trực tiếp xuống, chẳng hạn như khi bạn tải một tệp nhỏ xuống. Tính năng tải nội dung nghe nhìn trực tiếp xuống được ra mắt trong phiên bản 1.9.0-beta của Thư viện ứng dụng API của Google cho Java.

Tính năng tải nội dung nghe nhìn trực tiếp xuống sẽ tải toàn bộ nội dung nghe nhìn xuống trong một yêu cầu HTTP, chứ không phải giao thức tải nội dung nghe nhìn tiếp nối (có thể tải xuống trong nhiều yêu cầu). Việc tải xuống trực tiếp sẽ làm giảm số lượng yêu cầu HTTP, nhưng sẽ làm tăng khả năng xảy ra lỗi (chẳng hạn như lỗi kết nối) với các tệp tải xuống có kích thước lớn.

Cách sử dụng giống như cách mô tả ở trên, cộng thêm với lệnh gọi sau đây để yêu cầu MediaHttpDownloader thực hiện tải xuống trực tiếp:

mediaHttpDownloader.setDirectDownloadEnabled(true);