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

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

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

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

しかし、あくまで 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)を設定することが出来ます。

無期限での公開

// まずは、アップロード時に紐付けた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}});}}});

Related Post