美文网首页
AliyunOSSiOS封装实践 2022-04-25 周一

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

作者: 勇往直前888 | 来源:发表于2022-04-28 11:05 被阅读0次

简介

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

Step1 集成AliyunOSSiOS三方库

  • 不管好不好用,反正要上传阿里云,只能用它。访问官网,看帮助链接,基本就可以用了。官网帮助链接

  • 在Podfile中加一行pod 'AliyunOSSiOS',install一下就可以了。

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];              
  • 把上面那些信息换成你们自己以及上一步从后台拿到的,就可以了。

简单上传

  • 直接抄官网的代码就可以了。官网位置

  • 官网中通过//注释的代码尽量不要打开,没什么用。

  • 文件路径,以及上传成功后返回给你的urlString是两个比较重要的东西,用点心搞清楚基本就可以了。

  • // [putTask waitUntilFinished]; 这句要打开。并且上传过程是比较耗时的,这里用一下最简单的线程就可以了。

  • 上传进度:说是可选,其实是必须的。我曾经先设为nil,结果不行。

// (可选)设置上传进度。
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;
}];
  • 这一段就是上传结束后的代码。比较无语。

  • 这个block是上传结束后的回调,最好加一个切回主线程执行。不然由于修改UI而导致崩溃就悲剧了。

  • 告诉后台的url要你自己拼接,阿里云竟然不告诉你,真是无语。

  • 在这个回调中,再发起一次后台的接口,告诉后台上传成功,并把你拼接的图片位置告诉你的后台。

小结

  • 这个过程涉及到三方配合,比较复杂。

  • 幸好提供了例子代码,抄抄也能用。

  • 让人无语的是,基本的多线程都不注意,有低级的缺陷。

相关文章

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

    简介 以前APP的照片基本上用AFNetworking往自己的后台传的,就是那个著名的formData的接口。不过...

  • unable to access 'https://git/co

    podfile: pod 'AliyunOSSiOS'终端:pod installError: image解决方法...

  • 夫妻博弈

    2022-04-25 周一 ☔️ 我左肘关节一受凉或者在阴雨天就会很难受,不只是疼,而且抽,好像筋脉紧缩了——这应...

  • 神奇复活

    2022-04-25 周一 雷阵雨 1 上午篇 雨,滴滴答答,不停不歇。 心心念念不时搬小板凳去阳台垫脚,探头看窗...

  • 骤雨消灭了闷热和蠢蠢欲动的烦躁

    2022-04-25 周一 多云-大雨-阴 今天突下了一场暴雨,很快,消灭了闷热和蠢蠢欲动的烦躁。昨天应该写周结的...

  • Reflection

    Reflection 反射实践之数据封装

  • 2022-04-25(周一)

    今天自己决定开始瘦身,再不努力自己去年辛苦减去的十多斤肉很快就回来,今天早晨称了一下,回来一半多。 想自己最近为什...

  • 上传图片文件至阿里云

    首先cocoapod安装AliyunOSSiOS 一.请求阿里//阿里云服务的sts认证请求 (void)getA...

  • iOS网络框架简单封装

    AFN 简单封装--iOS重构-轻量级的网络请求封装实践 YTKNetworking 网络框架封装源码解析:网络层...

  • 立方根的求解-A perfect cube,The cube r

    2022-04-25 A perfect cube is the result when an integer i...

网友评论

      本文标题:AliyunOSSiOS封装实践 2022-04-25 周一

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