罗列Bucket所有Object
- OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
- getBucket.bucketName = @"<bucketName>";
- // 可选参数,具体含义参考:https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucket
- // getBucket.marker = @"";
- // getBucket.prefix = @"";
- // getBucket.delimiter = @"";
- OSSTask * getBucketTask = [client getBucket:getBucket];
- [getBucketTask continueWithBlock:^id(OSSTask *task) {
- if (!task.error) {
- OSSGetBucketResult * result = task.result;
- NSLog(@"get bucket success!");
- for (NSDictionary * objectInfo in result.contents) {
- NSLog(@"list object: %@", objectInfo);
- }
- } else {
- NSLog(@"get bucket failed, error: %@", task.error);
- }
- return nil;
- }];
罗列操作具体可设置的参数名称和作用如下:
检查文件是否存在
SDK提供了同步接口检测某个指定Object是否在OSS上:
- NSError * error = nil;
- BOOL isExist = [client doesObjectExistInBucket:TEST_BUCKET withObjectKey:@"file1m" withError:&error];
- if (!error) {
- if(isExist) {
- NSLog(@"File exists.");
- } else {
- NSLog(@"File not exists.");
- }
- } else {
- NSLog(@"Error!");
- }
复制Object
- OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
- copy.bucketName = @<bucketName>;
- copy.objectKey = @"<objectKey>";
- copy.sourceCopyFrom = [NSString stringWithFormat:@"/%@/%@", @"<bucketName>, @"<objectKey_copyFrom>"];
- OSSTask * task = [client copyObject:copy];
- [task continueWithBlock:^id(OSSTask *task) {
- if (!task.error) {
- // ...
- }
- return nil;s
- }];
上述代码实现了CopyObject,注意:
- 源Object和目标Object必须属于同一个数据中心。
- 如果拷贝操作的源Object地址和目标Object地址相同,可以修改已有Object的meta信息。
- 拷贝文件大小不能超过1G,超过1G需使用Multipart Upload操作。
删除Object
下面代码实现了DeleteObject,要求对所在的Bucket有写权限。
- OSSDeleteObjectRequest * delete = [OSSDeleteObjectRequest new];
- delete.bucketName = @"<bucketName>";
- delete.objectKey = @"<objectKey>";
- OSSTask * deleteTask = [client deleteObject:delete];
- [deleteTask continueWithBlock:^id(OSSTask *task) {
- if (!task.error) {
- // ...
- }
- return nil;
- }];
- // [deleteTask waitUntilFinished];
只获取Object的Meta信息
下面代码用于获取Object的元信息:
- OSSHeadObjectRequest * head = [OSSHeadObjectRequest new];
- head.bucketName = @"<bucketName>";
- head.objectKey = @"<objectKey>";
- OSSTask * headTask = [client headObject:head];
- [headTask continueWithBlock:^id(OSSTask *task) {
- if (!task.error) {
- OSSHeadObjectResult * headResult = task.result;
- NSLog(@"all response header: %@", headResult.httpResponseHeaderFields);
- // some object properties include the 'x-oss-meta-*'s
- NSLog(@"head object result: %@", headResult.objectMeta);
- } else {
- NSLog(@"head object error: %@", task.error);
- }
- return nil;
- }];