8. ファイルストレージ¶
ここではファイルストレージの利用方法について説明します。
8.1. ファイルの新規アップロード¶
ファイルは NBFile クラスのインスタンスとして生成します。
NBFile *fileObj = [NBFile objectWithBucketName:@"FileBucket1"];
fileObj.fileName = "sample1.jpg";
バケット名を指定して objectWithBucketName メソッドを呼び出してファイルを生成します。 ファイルには、ファイル名、ACL、Content-Typeを指定できます。
ファイルを新規アップロードするには、 uploadNewFileInBackgroundWithURL メソッドを呼び出します。 uploadNewFileInBackgroundWithURL には、アップロードするファイルのパスと、コールバックを渡します。 また、 progressBlock で進捗を監視することができます。
NSURL *fileURL = [NSURL fileURLWithPath:@"/Users/test/sample1.jpg"];
[fileObj uploadNewFileInBackgroundWithURL:fileURL resultBlock:^(NSDictionary *result, NSError *error) {
if (!error) {
// 成功時の処理
} else {
// エラー時の処理
}
} progressBlock:^(int64_t transferred, int64_t expected) {
// 進捗通知処理
}];
8.2. アクセス制御¶
ファイル単位でアクセス制御を行うことができます。
アクセス制御には、オブジェクトストレージと同様に NBAcl クラスを使用します。 NBFile の acl プロパティに設定します。
8.3. ファイル一覧の取得¶
バケット内のファイル一覧の取得には、 NBFileBucket の queryFileInBackgroundWithConditions メソッドを使用します。
// バケットインスタンス生成
NBFileBucket *fileBucket = [[NBFileBucket new] initWithName:@"FileBucket1"];
[fileBucket queryFileInBackgroundWithConditions:NBFileConditionNone block:^(NSArray *datalist, NSError *error) {
if (!error) {
// 成功時の処理
} else {
// エラー時の処理
}
}];
取得したファイルの一覧は、 datalist に NBFile の配列で渡されます。
8.4. ファイルのダウンロード¶
ファイルをダウンロードするには、 NBFile の downloadFileInBackgroundWithURL メソッドを呼び出します。 ダウンロードしたファイルは指定した url へ保存されます。
NSURL *requestUrl = [NSURL fileURLWithPath:@"/Users/test/download.jpg"];
[fileObj downloadFileInBackgroundWithURL:requestUrl downloadBlock:^(NSURL *url, NSError *error) {
if (!error) {
// 成功時の処理
NSData *downloadData = [NSData dataWithContentsOfURL:url]; // 例
} else {
// エラー時の処理
}
} progressBlock:nil];
8.5. ファイルの公開¶
ファイルをダウンロードするには、 NBFile の enablePublishFileInBackgroundWithBlock メソッドを呼び出します。 ファイルを公開すると、そのファイルに一意な URL が自動的に割り当てられ、REST API 以外から 無制限にアクセスができるようになります。
[expect enablePublishFileInBackgroundWithBlock:^(NSDictionary *result, NSError *error) {
if (!error) {
// 成功時の処理
NBFile *resultFile = result[@"metaData"];
NSString publicUrl = resultFile.publicUrl; // 公開URL
} else {
// エラー時の処理
}
}];
公開を停止するには disablePublishFileInBackgroundWithBlock メソッドを使用します。