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() を使用します。