Kii Cloud Android SDKを使ってファイル公開する


前回記事でファイルアップロードについてご紹介したので、今回はアップロードしたファイルを一般公開する機能についてご紹介します。先に「Kii Cloud Android SDKを使ってファイルアップロードする」を見ていただいて、Kii Cloud 上でのファイルアップロードについて知っていただくとより分かりやすいかと思います。

アップロードしたファイルについて

おさらいになりますが、Kii Cloud 上でのファイルは ObjectBody として管理されます。 その ObjectBody は Object と紐付けて管理され、Object は Bucket に入れられて管理されます。下図の例のように ObjectBody は各バケツのスコープ範囲でアクセスが可能になります。

ObjectBody2

しかし、あくまで Kii API 経由でのアクセスが可能な状態なので、写真ファイルのアップロードURLをメールでシェアしたりすることはできません。そんな時に有用なのが ObjectBody の公開機能です。

ファイル( ObjectBody )の公開方法

ObjectBody の公開機能を使うと、Webブラウザから認証なしでアクセス可能なURLを発行することができるので、発行されたURL経由でファイルをシェアすることが可能になります。この公開機能には下記の3種類の期限を設定することができます。

  1. 無期限での公開
  2. 秒数指定での公開(例:3分間だけ公開する)
  3. 日時指定での公開(例:2014年12月31日まで公開する)

公開すると kii.com ドメインのサーバに対する HTTPS の URL が割り当てられますが、一旦公開したものを非公開にするようなコントロールはできません。ObjectBody 自体を削除する必要があります。
また、発行されたURLは ObjectBody ではなく Object に紐付き、1つの Object に対して複数の有効期限(=URL)を設定することが出来ます。

ObjectBody3

無期限での公開

        // まずは、アップロード時に紐付けたObjectを取得
        // URI指定でオブジェクト取得
        Uri uri = Uri.parse("objectのuri...");
        KiiObject targetObj = KiiObject.createByUri(uri);

        // URI指定Objのリフレッシュして、最新状態にする
        targetObj.refresh(new KiiObjectCallBack() {
            public void onRefreshCompleted(int token, KiiObject object, Exception e) {
                if (e == null) {
                    // ObjectBodyの公開設定する
                    object.publishBody(new KiiObjectPublishCallback() {
                        @Override
                        public void onPublishCompleted(String url, KiiObject kiiObject, Exception e) {
                                // url:発行されたURL
                        }
                    });
                }
            }
        });

秒数指定での公開

        // まずは、アップロード時に紐付けたObjectを取得
        // URI指定でオブジェクト取得
        Uri uri = Uri.parse(kiiObjectUri);
        KiiObject targetObj = KiiObject.createByUri(uri);

        // URI指定Objのリフレッシュして、最新状態にする
        targetObj.refresh(new KiiObjectCallBack() {
            public void onRefreshCompleted(int token, KiiObject object, Exception e) {
                if (e == null) {
                    // ObjectBodyの公開設定する
                    // limitTime:秒数指定
                    object.publishBodyExpiresIn(limitTime, new KiiObjectPublishCallback() {
                        @Override
                        public void onPublishCompleted(String url, KiiObject kiiObject, Exception e) {
                                // url:発行されたURL
                        }
                    });
                }
            }
        });

日時指定での公開

        // まずは、アップロード時に紐付けたObjectを取得
        // URI指定でオブジェクト取得
        Uri uri = Uri.parse(kiiObjectUri);
        KiiObject targetObj = KiiObject.createByUri(uri);

        // URI指定Objのリフレッシュして、最新状態にする
        targetObj.refresh(new KiiObjectCallBack() {
            public void onRefreshCompleted(int token, KiiObject object, Exception e) {
                if (e == null) {
                    // ObjectBodyの公開設定する
                    // limitDate:日時指定(Calendar.getTimeInMillis()などの値)
                    object.publishBodyExpiresAt(limitDate, new KiiObjectPublishCallback() {
                        @Override
                        public void onPublishCompleted(String url, KiiObject kiiObject, Exception e) {
                                // url:発行されたURL
                        }
                    });
                }
            }
        });

参考URL

【Kii cloud リファレンスガイド】Object Body の公開
【Kii cloud リファレンスガイド】Object Body Operation