直接および再開可能なメディア アップロード

このドキュメントでは、Cloud Storage から直接、再開可能なメディア アップロードを クライアント ライブラリを使用できます。

再開可能なメディアのアップロード

大きなメディア ファイルをサーバーにアップロードする場合は、再開可能なメディア アップロードを使用して チャンクごとに送信されます。Google API で生成されるライブラリには、 再開可能なメディア アップロードを操作するためのコンビニエンス メソッドです。

再開可能なメディア アップロードのプロトコルは、再開可能なメディア アップロードと類似しています。 (Google Drive API ドキュメントに記載)のプロトコルを使用します。

プロトコル設計

次のシーケンス図は、再開可能なメディア アップロード プロトコルの仕組みを示しています。
リクエストとレスポンスがクライアントとサーバー間でどのように移動するかを示すシーケンス図。

実装の詳細

主なクラスは、次のとおりです。 MediaHttpUploader MediaHttpProgressListener をご覧ください。

サービス固有の生成されたライブラリのメソッドに mediaUpload が含まれている場合 パラメータ(ディスカバリ ドキュメント) その場合は、これらのメソッド用にコンビニエンス メソッドが作成され、 InputStreamContent 渡します。(Google API でのメディア アップロードの使用について詳しくは、 検出サービスについては、以下をご覧ください。 メディア アップロード

たとえば、Drive APIinsert メソッドなどです。 は mediaUpload をサポートしています。次のコードを使用してファイルをアップロードできます。

class CustomProgressListener implements MediaHttpUploaderProgressListener {
  public void progressChanged(MediaHttpUploader uploader) throws IOException {
    switch (uploader.getUploadState()) {
      case INITIATION_STARTED:
        System.out.println("Initiation has started!");
        break;
      case INITIATION_COMPLETE:
        System.out.println("Initiation is complete!");
        break;
      case MEDIA_IN_PROGRESS:
        System.out.println(uploader.getProgress());
        break;
      case MEDIA_COMPLETE:
        System.out.println("Upload is complete!");
    }
  }
}

File mediaFile = new File("/tmp/driveFile.jpg");
InputStreamContent mediaContent =
    new InputStreamContent("image/jpeg",
        new BufferedInputStream(new FileInputStream(mediaFile)));
mediaContent.setLength(mediaFile.length());

Drive.Files.Insert request = drive.files().insert(fileMetadata, mediaContent);
request.getMediaHttpUploader().setProgressListener(new CustomProgressListener());
request.execute();

再開可能なメディア アップロード機能を、サービス固有の 表示できます。次に例を示します。

File mediaFile = new File("/tmp/Test.jpg");
InputStreamContent mediaContent =
    new InputStreamContent("image/jpeg",
        new BufferedInputStream(new FileInputStream(mediaFile)));
mediaContent.setLength(mediaFile.length());

MediaHttpUploader uploader = new MediaHttpUploader(mediaContent, transport, httpRequestInitializer); uploader.setProgressListener(new CustomProgressListener()); HttpResponse response = uploader.upload(requestUrl); if (!response.isSuccessStatusCode()) { throw GoogleJsonResponseException(jsonFactory, response); }

メディアの直接アップロード

再開可能なメディアのアップロードはデフォルトで有効になっていますが、無効にして 直接メディア アップロードを使用します。たとえば、小さいファイルをアップロードする場合などです。直接 メディア アップロードは 1.9.0-betaで導入されました。 Java 用 Google API クライアント ライブラリのバージョンです。

直接メディア アップロードでは、1 回の HTTP リクエストでファイル全体がアップロードされますが、 再開可能なメディア アップロード プロトコル。複数のリクエストでファイルをアップロードします。 直接アップロードを行うと、HTTP リクエストの数は減りますが、 大規模なプロジェクトで発生する可能性のある障害(接続の障害など)の アップロードします。

メディアの直接アップロードの使用方法は、前述の 再開可能なメディアのアップロードと、MediaHttpUploader を指示する次の呼び出し 直接アップロードのみを行う場合:

mediaHttpUploader.setDirectUploadEnabled(true);