美文网首页
阿里云数据存储

阿里云数据存储

作者: 小DB | 来源:发表于2017-08-10 00:27 被阅读0次
    之前项目中需要用到阿里云数据存储,在网上参考,自己做个记录,便于日后查阅。

    oss是阿里云推出的图片存储服务,在项目开发过程中用到的图片上传,就可以直接放到阿里云的oss中,这样不仅可以节省我们项目本身的使用空间,同时当项目中的图片进行迁移的时候,也不会导致图片丢失的情况;

    1.https://www.aliyun.com登录阿里云,开通oss图片存储(如果你还没有账号需要先注册获取Access Key ID和Access Key Secret)

    2.新建bucket(注意命名空间,最好设置公共读写)

    3.阿里云的账号信息

    NSString * const AccessKey = @"";
    
    NSString * const SecretKey = @"";
    

    4.使用cocoa pods 引入阿里云的SDK,AliyunOSSiOS

    5.OSSClient是OSS服务的iOS客户端,它为调用者提供了一系列的方法,用于和OSS服务进行交互。一般来说,全局内只需要保持一个OSSClient,用来调用各种操作。

    @interface ViewController ()<UIImagePickerControllerDelegate, UINavigationControllerDelegate>
    {
        OSSClient *client;
    }
    @end
    

    6.用明文AK/SK实现的加签器(官方建议只在测试模式时使用)

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
        UIImage *image = info[UIImagePickerControllerOriginalImage];
        
        [picker dismissViewControllerAnimated:YES completion:^{
            
        }];
        if (UIImagePNGRepresentation(image)) {
            self.imageData = UIImagePNGRepresentation(image);
        }else {
            self.imageData = UIImageJPEGRepresentation(image, 0.1);
        }
        //参数设置
         NSString *endpoint = @"http://******.com";
        //CredentialProvider协议,要求实现加签接口
        //用明文AK/SK实现的加签器,建议只在测试模式时使用
        id<OSSCredentialProvider> credential = [[OSSPlainTextAKSKPairCredentialProvider alloc]initWithPlainTextAccessKey:AccessKey secretKey:SecretKey];
        client = [[OSSClient alloc]initWithEndpoint:endpoint credentialProvider:credential];
        //OSSClient可以设置的参数
        OSSClientConfiguration *config = [[OSSClientConfiguration alloc]init];
        /**
         最大重试次数
         */
        config.maxRetryCount = 2;
         /**
         请求超时时间
         */
        config.timeoutIntervalForRequest = 30;
         /**
         单个Object下载的最长持续时间
         */
        config.timeoutIntervalForResource = 60*60;
        client.clientConfiguration = config;
         /**
         上传Object的请求头
         */
        OSSPutObjectRequest *put = [[OSSPutObjectRequest alloc]init];
         /**
         Bucket名称
         */
        put.bucketName = @"***";
         /**
          从内存中的NSData上传时,通过这个字段设置
         */
        put.uploadingData = self.imageData;
        NSString *objectKey = [NSString stringWithFormat:@"123_ios_326/%@.jpg",[self getTimeNow]];
         /**
         Object名称
         */
        put.objectKey = objectKey;
        OSSTask *putTask = [client putObject:put];
        [putTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
            task = [client presignPublicURLWithBucketName:put.bucketName withObjectKey:put.objectKey];
            NSLog(@"objectKey: %@", put.objectKey);
            if (!task.error) {
                NSLog(@"上传成功");
            } else {
                NSLog(@"上传失败%@" , task.error);
            }
            return nil;
        }];
    }
    - (NSString *)getTimeNow
    {
        NSDate *datenow = [NSDate date];//现在时间
        NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];
        return timeSp;
    }
    

    原文参考链接:http://www.jianshu.com/p/27435fe627be

    相关文章

      网友评论

          本文标题:阿里云数据存储

          本文链接:https://www.haomeiwen.com/subject/futcrxtx.html