iOS 集成腾讯云上传下载图片COSClient/QCloudUtils

前奏

开始之前先说明一下这个是我开发结束一个月后写的,中可能有一些细节不是很到位请谅解,每一个成功背后都有很多的心酸。

iOS SDK下载连接    iOS SDK下载    https://cloud.tencent.com/document/product/436/6530

腾讯云注册账号给的ID提前准备工作

APP_ID=11$$$$4555;

SECRET_ID="DDGDD#####6A6qOl9Q***";

SECRET_KEY="UKGGssaaaaaaaaaaabx";

 BUCKET="fks";

 TENCENT_DOMAIN="http://fks-11$$$$4555.picdaash.myqcloud.com";

采用 使用Cocoapods导入手动导入没有尝试  pod"QCloudCOSV4"跟着文档走

1.根据文档的提示操作到【初始化】

下面说在你工程的配置参数

在需要使用的控制器中导入

1

创建

2

初始化APPId和bucket参数

3

对于其他参数

attrs  我这里是不没有设置、directory这个参数选填(如果你添加上返回的图片的URL就后面就会叠加一个Name这里就没有截图了时间长了不想再次截图)

insertOnly上传将插入并覆盖现有文件。但是如果设置“YES”,它不会覆盖上一个上传文件。

sign最重要的就是签名。下面介绍

2.签名获取

有两种方法获取签名 一种是自己生成 、一种是后台生成你去请求签名。

我生成似乎没有成功但代码还在

-(void)getUploadSign

{

    NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];

    NSLog(@"时间%@",dat);

    NSTimeInterval a=[dat timeIntervalSince1970];

    NSString *timeString = [NSString stringWithFormat:@"%.0f", a];//转为字符型

    NSLog(@"timeString%@",timeString);

    //三个月后

    NSTimeInterval b = [dat timeIntervalSince1970]+90*24*60*60*60;

    NSString *timeString_3 = [NSString stringWithFormat:@"%.0f", b];//转为字符型

    NSLog(@"timeString%@",timeString_3);

    int x = arc4random() % 100000;

    NSLog(@"随机数%d",x);

    NSString *url = [NSString stringWithFormat:@"a=%@&b=%@&k=UKGGssaaaaaaaaaaabx&e=%@&t=%@&r=%d&u=0",appId,bucket,timeString_3,timeString,x];

    NSLog(@"%@",url);

    //加密

    //self.sign = [LDUserViewController Base_HmacSha1:@"UKGGssaaaaaaaaaaabx" data:url];

    //self.sign =url;

    NSLog(@"最后签名%@",self.sign);

    //[self.client getSignWithUrl:url    callBack:@selector(getSignFinis:)];


}

#pragma mark - network

-(void)getSignFinis:(NSString *)string

{

    if (string) {

        self.sign = string;

        NSLog(@"demo self.sign = %@",self.sign);

        //imgUrl.text =self.sign;

    }else{

        UIAlertView *al = [[UIAlertView alloc] initWithTitle:@"警告" message:@"签名为空" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

        [al show];

        //


    }

}

2.1 后台请求

自己掉接口

3上传图片

     3.1用户选取图片之后,将选取的图片重新命名保存到本地

3.1


保存方法

我这里给图片命名就是UUID.jpg

3.2到这里  你的签名有了 、图片路径有了、参数都配置了开始  用路径上传文件多个部分

//用路径上传文件多个部分

-(void)uploadFileMultipartWithPath:(NSString *)path

{

    //    fileName = [NSString stringWithFormat:@"a%lld",fileName];

    //    COSObjectMultipartPutTask *task = [[COSObjectMultipartPutTask alloc] init];

    COSObjectPutTask *task = [[COSObjectPutTask alloc] init];


    NSLog(@"-send---taskId---%lld",task.taskId);

    //task.multipartUpload = YES;

    currentTaskid = task.taskId;

    //NSLog(@"path%@",path);

    task.filePath = path;

    task.fileName = [NSString stringWithFormat:@"%@.jpg",uuid_LD];;

    task.bucket = bucket;

    //task.attrs = @"customAttribute";

    //task.directory = [NSString stringWithFormat:@"/%@",task.fileName];//这个参数选填

    //NSLog(@"task.directory = %@",task.directory);

    task.insertOnly = NO;//上载将插入并覆盖现有文件。但是如果设置“yes”,它不会覆盖上一个上传文件。

    task.sign = _sign;

    COSClient *client= [[COSClient alloc] initWithAppId:appId withRegion:@"sh"];

    client.completionHandler = ^(COSTaskRsp *resp, NSDictionary *context){

        COSObjectUploadTaskRsp *rsp = (COSObjectUploadTaskRsp *)resp;


        if (rsp.retCode == 0) {

            //sucess

            NSLog(@"成功后,后台返回文件数据%@\n任务描述信息%@\ndata%@\nrsp.sourceURL%@",rsp.fileData,rsp.descMsg,rsp.data,rsp.sourceURL);


            //如果返回的是图片URL不为空说明上传成功了

            //判断

            if ([self isBlankString:rsp.sourceURL]) {

                [LCProgressHUD showFailure:@"上传失败重新上传!"];

            }else{

                //不为空上传成功

                //给服务器传图片URL

                [self UploadingURLToTheServerNstringURL:rsp.sourceURL];



            }



        }else{

            NSLog(@"xx ");

            NSLog(@"context  = %@COSTaskRsp *resp=%@",context,rsp.descMsg);

            [LCProgressHUD showFailure:@"上传失败重新上传!"];

        }

    };

    client.progressHandler = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {

        //progress上传进度

        //NSLog(@"执行了");

    };

    [client putObject:task];


}

当返回rsp.retCode == 0时就说明上传成功了  rsp.sourceURL就是你要的图片的URL可以打印一下自己看看

基本上就这样时间长了不是很详细,只能做参考,欢迎修正。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容