8. ファイルストレージ¶
ここではファイルストレージの利用方法について説明します。
8.1. バケットの取得¶
NEC BaaS Embedded SDKではサーバへのバケットの生成はサポートしていないため、事前にデベロッ パーコンソールなどから該当のバケットを作成しておきます。
ファイル一覧操作などにはバケットが必要になります。 以下のようにファイルバケットのインスタンスを生成します。
NbFileBucket bucket(service1, "bucketName");
8.2. ファイルの新規アップロード¶
ファイルを新規アップロードするには、NbFileBucket の UploadNewFile() を使用します。
NbResult<NbFileMetadata> uploadResult =  bucket.UploadNewFile("test_file.txt",
                                                              "~/test_file.txt",
                                                              "text/plain",
                                                              NbAcl::CreateAclForAnonymous());
if(uploadResult.IsSuccess()) {
    // 処理成功
    // uploadしたファイルのメタデータを取得
    NbFileMetadata meta = uploadResult.GetSuccessData();
} else {
    // 処理失敗
}
UploadNewFile() には、ファイル名、ファイルパス、Content-Type、ACL、キャッシュ禁止フラグ(オプション)を渡します。
8.4. ファイル一覧の取得¶
バケット内のファイル一覧の取得には、NbFileBucket.GetFiles() を呼び出すことで行います。
NbResult<std::vector<NbFileMetadata>> resultFiles = bucket.GetFiles(false, false);
if(resultFiles.IsSuccess()) {
    // 処理成功
    for(auto aFile : resultFiles.GetSuccessData()) {
        // 各メタデータの参照
    }
} else {
    // 処理失敗
}
第一引数publishedがtrueの場合、公開設定をされているファイルのみを取得します。 また第二引数deleteMarkがtrueの場合、削除マークが付与されたファイルを含め、検索対象とします。
8.5. ファイルのダウンロード¶
ファイルのダウンロードには、NbFileBucket.DownloadFile() を使用します。
NbResult<int> downloadResult = bucket.DownloadFile("test_file.txt",
                                                   "./download_test_file.txt");
if(downloadResult.IsSuccess()) {
    // 処理成功
} else {
    // 処理失敗
}
8.6. ファイルの削除¶
ファイルを削除するには NbFileBucket.DeleteFile() を使用します。 通常はGetFiles()等で取得したメタデータを使用してファイルを指定します。
NbResult<NbJsonObject> deleteResult = bucket.DeleteFile(metaData, false);
if(deleteResult.IsSuccess()) {
    // 処理成功
} else {
    // 処理失敗
}
第二引数がtrueの場合、メタデータに削除マークを付与します。後からファイルの情報を参照することができます。処理結果には更新されたメタデータが格納されます。
falseの場合、メタデータを完全に消去します。処理結果は空となります。