10. ファイルストレージ

ここではファイルストレージの利用方法について説明します。

10.1. バケットの取得

バケットの取得には、NbService.fileBucketManager() で取得される ファイルバケットマネージャを使用します。

ファイル一覧操作などにはバケットが必ず必要になります。

NbFileBucketManager fbm = NbService.getInstance().fileBucketManager();
NbFileBucket fileBucket = fbm.getBucket("FileBucket1");

10.2. ファイルの新規アップロード

ファイルを新規アップロードするには、NbFileBucket の uploadNewFile() を呼び出します。

fileBucket.uploadNewFile("sample1.jpg", "/tmp/sample1.jpg", null, "image/jpeg", new NbCallback<NbFileMetadata>() {
    @Override
    public void onSuccess(NbFileMetadata meta) {
        // 成功時の処理
    }

    @Override
    public void onFailure(int statusCode, NbErrorInfo errorInfo) {
        // 失敗時の処理
    }
});

uploadNewFile には、ファイル名、ファイルパス、ACL(省略可)、Content-Type、コールバックを渡します。 第二引数はファイルパスではなく InputStream を渡すこともできます。

コールバックは NbFileMetadataCallback 型で、成功すると onSuccess が呼ばれます。

10.3. アクセス制御

ファイル単位でアクセス制御を行うことができます。

アクセス制御には、オブジェクトストレージと同様に NbACL クラスを使用します。 uploadNewFile() の引数で ACL を指定することができます。

10.4. ファイル一覧の取得

バケット内のファイル一覧の取得には、NbFileBucket.getFileMatadataList() を呼び出すことで行います。

fileBucket.getFileMetadataList(false, new NbCallback<List<NbFileMetadata>>() {
    @Override
    public void onSuccess(List<NbFileMetadata> metas) {
        // 成功時の処理
    }

    @Override
    public void onFailure(int statusCode, NbErrorInfo errorInfo) {
        // 失敗時の処理
    }
});

取得したファイルの一覧は、onSuccess に List で渡されます。

10.5. ファイルのダウンロード

ファイルのダウンロードには、NbFileBucket.downloadFile() を使用します。 ファイルパスを File クラスで指定する方法と、指定した OutputStream に書き込む方法の2通りが あります。

以下は File で書き込み先を指定する場合の例です。

File file = new File("/tmp/sample1.jpg");
fileBucket.downloadFile("sample1.jpg", file, new NbCallback<String>() {
    @Override
    public void onSuccess(String filePath) {
        // 成功時の処理
    }

    @Override
    public void onFailure(int statusCode, NbErrorInfo errorInfo) {
        // 失敗時の処理
    }
});

10.6. ファイルの公開

ファイルを公開するには NbFileBucket.enablePublishFile() を使用します。

ファイルを公開すると、そのファイルに一意な URL が自動的に割り当てられ、REST API 以外から 無制限にアクセスができるようになります。

fileBucket.enablePublishFile("sample1.jpg", file, new NbCallback<NbFileMetadata>() {
    @Override
    public void onSuccess(NbFileMetadata meta) {
        // 成功時の処理
    }

    @Override
    public void onFailure(int statusCode, NbErrorInfo errorInfo) {
        // 失敗時の処理
    }
});

公開を停止するには NbFileBucket.disablePublishFile() を使用します。