前回記事でファイルアップロードについてご紹介したので、今回はアップロードしたファイルを一般公開する機能についてご紹介します。先に「Kii Cloud Android SDKを使ってファイルアップロードする」を見ていただいて、Kii Cloud 上でのファイルアップロードについて知っていただくとより分かりやすいかと思います。
アップロードしたファイルについて
おさらいになりますが、Kii Cloud 上でのファイルは ObjectBody として管理されます。 その ObjectBody は Object と紐付けて管理され、Object は Bucket に入れられて管理されます。下図の例のように ObjectBody は各バケツのスコープ範囲でアクセスが可能になります。
しかし、あくまで Kii API 経由でのアクセスが可能な状態なので、写真ファイルのアップロードURLをメールでシェアしたりすることはできません。そんな時に有用なのが ObjectBody の公開機能です。
ファイル( ObjectBody )の公開方法
ObjectBody の公開機能を使うと、Webブラウザから認証なしでアクセス可能なURLを発行することができるので、発行されたURL経由でファイルをシェアすることが可能になります。この公開機能には下記の3種類の期限を設定することができます。
- 無期限での公開
- 秒数指定での公開(例:3分間だけ公開する)
- 日時指定での公開(例:2014年12月31日まで公開する)
公開すると kii.com ドメインのサーバに対する HTTPS の URL が割り当てられますが、一旦公開したものを非公開にするようなコントロールはできません。ObjectBody 自体を削除する必要があります。
また、発行されたURLは ObjectBody ではなく Object に紐付き、1つの Object に対して複数の有効期限(=URL)を設定することが出来ます。
無期限での公開
// まずは、アップロード時に紐付けた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() {@Overridepublic 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() {@Overridepublic void onPublishCompleted (String url, KiiObject kiiObject, Exception e) { // url:発行されたURL}});}}}); |