全部产品
对象存储 OSS

管理文件

更新时间:2017-06-07 13:26:11   分享:   

罗列Bucket所有Object

  1. OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
  2. getBucket.bucketName = @"<bucketName>";
  3. // 可选参数,具体含义参考:https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucket
  4. // getBucket.marker = @"";
  5. // getBucket.prefix = @"";
  6. // getBucket.delimiter = @"";
  7. OSSTask * getBucketTask = [client getBucket:getBucket];
  8. [getBucketTask continueWithBlock:^id(OSSTask *task) {
  9. if (!task.error) {
  10. OSSGetBucketResult * result = task.result;
  11. NSLog(@"get bucket success!");
  12. for (NSDictionary * objectInfo in result.contents) {
  13. NSLog(@"list object: %@", objectInfo);
  14. }
  15. } else {
  16. NSLog(@"get bucket failed, error: %@", task.error);
  17. }
  18. return nil;
  19. }];

罗列操作具体可设置的参数名称和作用如下:

名称 作用
delimiter 用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的object作为一组元素: CommonPrefixes。
marker 设定结果从marker之后按字母排序的第一个开始返回。
maxkeys 限定此次返回object的最大数,如果不设定,默认为100,maxkeys取值不能大于1000。
prefix 限定返回的object key必须以prefix作为前缀。注意使用prefix查询时,返回的key中仍会包含prefix。

检查文件是否存在

SDK提供了同步接口检测某个指定Object是否在OSS上:

  1. NSError * error = nil;
  2. BOOL isExist = [client doesObjectExistInBucket:TEST_BUCKET withObjectKey:@"file1m" withError:&error];
  3. if (!error) {
  4. if(isExist) {
  5. NSLog(@"File exists.");
  6. } else {
  7. NSLog(@"File not exists.");
  8. }
  9. } else {
  10. NSLog(@"Error!");
  11. }

复制Object

  1. OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
  2. copy.bucketName = @<bucketName>;
  3. copy.objectKey = @"<objectKey>";
  4. copy.sourceCopyFrom = [NSString stringWithFormat:@"/%@/%@", @"<bucketName>, @"<objectKey_copyFrom>"];
  5. OSSTask * task = [client copyObject:copy];
  6. [task continueWithBlock:^id(OSSTask *task) {
  7. if (!task.error) {
  8. // ...
  9. }
  10. return nil;s
  11. }];

上述代码实现了CopyObject,注意:

  • 源Object和目标Object必须属于同一个数据中心。
  • 如果拷贝操作的源Object地址和目标Object地址相同,可以修改已有Object的meta信息。
  • 拷贝文件大小不能超过1G,超过1G需使用Multipart Upload操作。

删除Object

下面代码实现了DeleteObject,要求对所在的Bucket有写权限。

  1. OSSDeleteObjectRequest * delete = [OSSDeleteObjectRequest new];
  2. delete.bucketName = @"<bucketName>";
  3. delete.objectKey = @"<objectKey>";
  4. OSSTask * deleteTask = [client deleteObject:delete];
  5. [deleteTask continueWithBlock:^id(OSSTask *task) {
  6. if (!task.error) {
  7. // ...
  8. }
  9. return nil;
  10. }];
  11. // [deleteTask waitUntilFinished];

只获取Object的Meta信息

下面代码用于获取Object的元信息:

  1. OSSHeadObjectRequest * head = [OSSHeadObjectRequest new];
  2. head.bucketName = @"<bucketName>";
  3. head.objectKey = @"<objectKey>";
  4. OSSTask * headTask = [client headObject:head];
  5. [headTask continueWithBlock:^id(OSSTask *task) {
  6. if (!task.error) {
  7. OSSHeadObjectResult * headResult = task.result;
  8. NSLog(@"all response header: %@", headResult.httpResponseHeaderFields);
  9. // some object properties include the 'x-oss-meta-*'s
  10. NSLog(@"head object result: %@", headResult.objectMeta);
  11. } else {
  12. NSLog(@"head object error: %@", task.error);
  13. }
  14. return nil;
  15. }];
本文导读目录
本文导读目录
以上内容是否对您有帮助?