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

このドキュメントでは、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);