AliyunOSSiOS封装实践 2022-04-25 周一

2022-04-28  本文已影响0人  勇往直前888

简介

以前APP的照片基本上用AFNetworking往自己的后台传的,就是那个著名的formData的接口。不过,现在的图片越来越多存到阿里云。这样的话,就是APP和阿里云之间直接联系,照片上传之后再来个接口告诉后台文件位置就好了。

Step1 集成AliyunOSSiOS三方库

Step2 从后台拿初始化参数

连接你的后台,从后台拿初始化需要的参数,基本需要以下几个字段:

{
      "accessKeyId": "STS.xx",
      "accessKeySecret": "xx",
      "expiration": "2021-09-08T06:33:37Z",
        "securityToken": "xxxx"
}

Step3 初始化

NSString *endpoint = @"https://oss-cn-hangzhou.aliyuncs.com";

// 移动端建议使用STS方式初始化OSSClient。
id<OSSCredentialProvider> credential = [[OSSFederationCredentialProvider alloc] initWithFederationTokenGetter:^OSSFederationToken * _Nullable{
    OSSFederationToken *token = [OSSFederationToken new];
    // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
    token.tAccessKey = @"AccessKeyId";
    token.tSecretKey = @"AccessKeySecret";
    // 从STS服务获取的安全令牌(SecurityToken)。
    token.tToken = @"SecurityToken";
    // 临时访问凭证的过期时间。
    token.expirationTimeInGMTFormat = @"Expiration";
    return token;
}];

client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];              

简单上传

// (可选)设置上传进度。
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
    // 指定当前上传长度、当前已经上传总长度、待上传的总长度。
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};

这里的log可以去掉,没用,保持一个空的block就可以了。如果实在想做点东西,这里可以做个进度条。不过大多数情况都很快,作用不大。

Step4:告知后台

[putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"upload object success!");
    } else {
        NSLog(@"upload object failed, error: %@" , task.error);
    }
    return nil;
}];

小结

上一篇下一篇

猜你喜欢

热点阅读