支援續傳的媒體下載功能

從伺服器下載大型媒體檔案時,請使用 續傳媒體下載,以分段下載檔案。Google API 產生的程式庫包含方便與支援續傳互動的便利方法 媒體下載

支援續傳的媒體下載通訊協定與支援續傳的媒體上傳作業相似 相關資訊,詳見 Google Drive API 說明文件

實作詳情

您感興趣的主要類別為 MediaHttpDownloaderMediaHttpDownloaderProgressListener。 媒體內容會以分塊的形式下載,也可以設定區塊大小。如果 要求期間發生伺服器錯誤,然後重試此要求。

如果服務專屬產生程式庫中的方法支援下載 探索文件,然後 方便的下載方法 OutputStream。 (如要進一步瞭解透過「Google API 探索服務」使用媒體下載的資訊,請參閱 媒體下載)。

例如:

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

即使沒有服務專用的程式庫,也能使用這項功能。 範例如下:

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

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

直接下載媒體

支援續傳的媒體下載功能預設為啟用,但您可以將其停用,然後改用 您可直接下載媒體,例如下載小型檔案時。 我們在 1.9.0-beta 適用於 Java 的 Google API 用戶端程式庫版本。

直接媒體下載作業會透過一個 HTTP 要求,下載整個媒體內容, 與支援續傳的媒體下載通訊協定 這種通訊協定可透過多種方式 要求。直接下載會減少 HTTP 要求數量,但 會增加可能發生失敗 (例如連線失敗) 的機率 下載大量資料

上文的用法與上述說明相同,但系統會新增以下項目: 呼叫 MediaHttpDownloader 直接下載:

mediaHttpDownloader.setDirectDownloadEnabled(true);