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.根据文档的提示操作到【初始化】

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

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

iOS 集成腾讯云上传下载图片COSClient/QCloudUtils_第1张图片
1

创建

iOS 集成腾讯云上传下载图片COSClient/QCloudUtils_第2张图片
2

初始化APPId和bucket参数

iOS 集成腾讯云上传下载图片COSClient/QCloudUtils_第3张图片
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用户选取图片之后,将选取的图片重新命名保存到本地

iOS 集成腾讯云上传下载图片COSClient/QCloudUtils_第4张图片
3.1


iOS 集成腾讯云上传下载图片COSClient/QCloudUtils_第5张图片
保存方法

我这里给图片命名就是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可以打印一下自己看看

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

你可能感兴趣的:(iOS 集成腾讯云上传下载图片COSClient/QCloudUtils)