アップロード

一括アップロードを行う例を以下に挙げます。

  • // Create a KiiObject in an application-scope bucket.
    KiiObject object = Kii.bucket("AppBucket").object();
    
    // Set key-value pairs.
    object.set("title", "MyImage");
    object.set("fileSize", 783204);
    
    try {
      // Save the KiiObject.
      object.save();
    } catch (IOException e) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    }
    
    // Specify a file to upload.
    File localFile = new File(Environment.getExternalStorageDirectory(),
            "myImage.jpg");
    
    try {
      // Start uploading.
      object.uploadBody(localFile, "image/jpeg");
    } catch (IOException e) {
      // Handle the error.
    } catch (AppException e) {
      // Handle the error.
    }
  • // Create a KiiObject in an application-scope bucket.
    KiiObject object = Kii.bucket("AppBucket").object();
    
    // Set key-value pairs.
    object.set("title", "MyImage");
    object.set("fileSize", 783204);
    
    // Save the KiiObject.
    object.save(new KiiObjectCallBack() {
      @Override
      public void onSaveCompleted(int token, KiiObject object, Exception exception) {
        if (exception != null) {
          // Handle the error.
          return;
        }
        // Specify a file to upload.
        File localFile = new File(Environment.getExternalStorageDirectory(),
                "myImage.jpg");
    
        // Start uploading.
        object.uploadBody(localFile, "image/jpeg", new KiiObjectBodyCallback() {
          @Override
          public void onTransferStart(KiiObject kiiObject) {
          }
    
          @Override
          public void onTransferProgress(KiiObject object, long completedInBytes, long totalSizeinBytes) {
            float progress = (float) completedInBytes / (float) totalSizeinBytes * 100.0f;
          }
    
          @Override
          public void onTransferCompleted(KiiObject object, Exception exception) {
            if (exception != null) {
              // Handle the error.
              return;
            }
          }
        });
      }
    });

ここでは以下の処理を実施しています。

  • (必要に応じて)KiiObject にキーと値のペアをセット。ファイル名、ファイルサイズ、Object Body の有無などを登録しておくことも可能。
  • save() メソッドを実行して、オブジェクトを保存。
  • アップロード対象ファイル(myImage.jpg)のリファレンスを作成。
  • uploadBody() メソッドを実行して、ファイルのアップロードを開始。

uplaodBody() メソッドを使用する場合は、事前に save() メソッドによって Kii Cloud 上に KiiObject を作成しておく必要があります。

ノンブロッキング API の onTransferProgress() メソッドは、転送の進捗状況に応じて呼び出されます。転送サイズが小さい場合は、1 回目の呼び出しで 100% の進捗を示すことがあります。

Content-Type は "type/subtype" の形式で指定します。Kii Cloud に送信された Content-Type は、ダウンロード時や、公開された Object Body をブラウザで参照するときに使用されます。

Object Body のアップロードで外部記憶装置にアクセスする際、実行時パーミッションが必要になる場合があります。実装方法の詳細は、実行時パーミッションの取得 を参照してください。