阿里云 云存储

Aliyun

PCH文件:
/** 阿里云 */
#import <AliyunOSSiOS/OSSService.h>  //头文件
#define Ali_EndPoint_URL @"http://oss-cn-shanghai.aliyuncs.com" //URL
#define Ali_AccessKeyId @"abcdefg12345abcd"                     //AccessKeyId
#define Ali_AccessKeySecret @"abcdefg12345abcdefg12345ab"       //secretKeyId
#define Ali_SecurityToken @""                                   //securityToken
#define Ali_bucketName @"cuteKids-img"          //文件夹(路径)
#define Ali_objectKey @""



#define User_Def [NSUserDefaults standardUserDefaults]  //NSUserdefault


示例:图片存储处理

[1].图片上传

//选择图片,并上传
[BDImagePicker showImagePickerFromViewController:self allowsEditing:YES finishAction:^(UIImage *image) {
    
    if (image) { //图片已经挑选好

        //上传图片
        [SVProgressHUD showWithStatus:@"图片上传中..."];
        
        NSData * iconData = UIImagePNGRepresentation(image);//图片转为NSData类型
        
        NSString *endpoint = Ali_EndPoint_URL;//阿里云URL
        // 移动端建议使用STS方式初始化OSSClient。更多鉴权模式请参考后面的访问控制章节。
        id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:Ali_AccessKeyId secretKeyId:Ali_AccessKeySecret securityToken:Ali_SecurityToken];
        OSSClientConfiguration * conf = [OSSClientConfiguration new];
        conf.maxRetryCount = 3; // 网络请求遇到异常失败后的重试次数
        conf.timeoutIntervalForRequest = 30; // 网络请求的超时时间
        conf.timeoutIntervalForResource = 24 * 60 * 60; // 允许资源传输的最长时间
        
        OSSClient * client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential clientConfiguration:conf];
        
        OSSPutObjectRequest * put = [OSSPutObjectRequest new];//PUT方式
        put.bucketName = Ali_bucketName;//路径
        NSDateFormatter * format = [[NSDateFormatter alloc] init];
        [format setDateFormat:@"yyyyMMddHHmmsss"];
        NSString * timeStr = [format stringFromDate:[NSDate date] ];
        NSString * mobileStr = [User_Def objectForKey:USER_MobileNumber]?[User_Def objectForKey:USER_MobileNumber]:@"";
        NSString * objKeyStr = [NSString stringWithFormat:@"%@-%@.png",mobileStr,timeStr];
        put.objectKey = objKeyStr; //图片存储名:“手机号-日期.png”
        put.uploadingData = iconData; //直接上传NSData
        put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
            //NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
            //显示进度:百分比
            [SVProgressHUD showProgress:(float)totalByteSent/(float)totalBytesExpectedToSend];
        };
        
        OSSTask * putTask = [client putObject:put];
        [putTask continueWithBlock:^id(OSSTask *task) {
            NSLog(@"%@",task);
            if (!task.error) {
                NSLog(@"upload object success!");
                
                [User_Def setObject:objKeyStr forKey:ICON_Avatar];
                [SVProgressHUD showSuccessWithStatus:@"图片上传成功"];

                //主线程:更换当前图片
                dispatch_async(dispatch_get_main_queue(), ^{ 
                      _iconImgV.image = image; 
                });
            } else {
                NSLog(@"upload object failed, error: %@" , task.error);
                
                [SVProgressHUD showErrorWithStatus:@"图片上传失败"];
            }
            return nil;
        }];
        
        //[putTask waitUntilFinished];//可以等待任务完成
    }
}];






[2].获取云服务器存储地址:

//获取URL
NSString * publicURL = nil;

     
NSString *endpoint = Ali_EndPoint_URL;
// 移动端建议使用STS方式初始化OSSClient。更多鉴权模式请参考后面的访问控制章节。
id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:Ali_AccessKeyId secretKeyId:Ali_AccessKeySecret securityToken:Ali_SecurityToken];
OSSClientConfiguration * conf = [OSSClientConfiguration new];
conf.maxRetryCount = 3; // 网络请求遇到异常失败后的重试次数
conf.timeoutIntervalForRequest = 30; // 网络请求的超时时间
conf.timeoutIntervalForResource = 24 * 60 * 60; // 允许资源传输的最长时间
        
OSSClient * client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential clientConfiguration:conf];
        
OSSPutObjectRequest * get = [OSSPutObjectRequest new];//get方式
get.bucketName = Ali_bucketName;//路径
NSString * objKeyStr = [NSString stringWithFormat:@"%@/avatar",[NSData data] ];
//get.objectKey = @"<objectKey>";//填写文件的路径
get.objectKey = @"18308080808-201706281539328.png";//图片存储名:“手机号-日期.png”
OSSTask * task = [client putObject:get];
task = [client presignPublicURLWithBucketName:Ali_bucketName
                                withObjectKey:get.objectKey];
if (!task.error) {
     publicURL = task.result;//获取到的URL
 } else {
      NSLog(@"sign url error: %@", task.error);
}

获取到的阿里云存储地址http://cuteKids-img.oss-cn-shanghai.aliyuncs.com/18308080808-201706281539328.png


之后就可以定义一个URL的(固定):
#define GetAliDataHeaderUrl @"http://cuteKids-img.oss-cn-shanghai.aliyuncs.com/" //外网(图片)




[3].使用地址:
<3-1>.融云聊天界面,头像配置

网络请求成功后,配置 融云头像地址:userInfo.portraitUri = publicURL;

//融云:个人信息配置
if ([responseObject[@"Code"] integerValue] == 0) { //网络请求成功
    
    for (NSDictionary * dict in responseObject[@"DataList"]) {

        //设置用户个人信息
        RCUserInfo * userInfo = [[RCUserInfo alloc] init];
        userInfo.userId = dict[@"userId"];        //1.用户id
        userInfo.name = dict[@"userName"];        //2.用户名
        NSString * picUrlStr;  //头像地址
        if (dict[@"icon"]) {
            //阿里云图片URL
            picUrlStr = [NSString stringWithFormat:@"%@%@",GetAliDataHeaderUrl,dict[@"icon"] ];
        } else { //网络占位(默认)图片
            picUrlStr = @"http://img.qq1234.org/uploads/allimg/140520/3_140520152454_6.jpg";
        }
        userInfo.portraitUri = picUrlStr;         //3.头像地址
        
        //融云【方式二】:统一配置
        //RCUserInfo * userInfo = [[RCUserInfo alloc] initWithUserId:dict[@"userId"] name:dict[@"userName"] portrait:picUrlStr];
        

        [[RCIM sharedRCIM] setCurrentUserInfo:userInfo];
    }
    
    dispatch_async(dispatch_get_main_queue(), ^{
        [weakSelf.conversationMessageCollectionView reloadData];
    });
}



//头像存储URL:
//#define GetAliDataHeaderUrl @"http://cuteKids-img.oss-cn-shanghai.aliyuncs.com/"  //外网(图片)



<3-2>.一般图像的使用: SDWebImage加载

NSString * picUrlStr = [NSString stringWithFormat:@"%@%@",GetAliDataHeaderUrl,model.createrAvatar];
[_iconImgV sd_setImageWithURL:[NSURL URLWithString:picUrlStr] placeholderImage:[UIImage imageNamed:@"userIcon"]]






服务器 数据管理

基础配置:

NSString *endpoint = Ali_EndPoint_URL;
// 移动端建议使用STS方式初始化OSSClient。更多鉴权模式请参考后面的访问控制章节。
id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:Ali_AccessKeyId secretKeyId:Ali_AccessKeySecret securityToken:Ali_SecurityToken];
OSSClientConfiguration * conf = [OSSClientConfiguration new];
conf.maxRetryCount = 3; // 网络请求遇到异常失败后的重试次数
conf.timeoutIntervalForRequest = 30; // 网络请求的超时时间
conf.timeoutIntervalForResource = 24 * 60 * 60; // 允许资源传输的最长时间

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



[1].查看所有Object:

//查看所有Object
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
getBucket.bucketName = Ali_bucketName;
// 可选参数,具体含义参考:https://docs.aliyun.com/#/pub/oss/api-reference/bucket&GetBucket
// getBucket.marker = @"";
// getBucket.prefix = @"";
// getBucket.delimiter = @"";
OSSTask * getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        OSSGetBucketResult * result = task.result;
        NSLog(@"get bucket success!");
        for (NSDictionary * objectInfo in result.contents) {
            NSLog(@"list object: %@", objectInfo);
        }
    } else {
        NSLog(@"get bucket failed, error: %@", task.error);
    }
    return nil;
}];


[2].检查文件是否存在

NSString * objKeyStr = @"18308080808-201706281539328.png";
//检查文件是否存在
NSError * error = nil;
BOOL isExist = [client doesObjectExistInBucket:Ali_bucketName objectKey:objKeyStr error:&error];
if (!error) {
    if(isExist) {
        NSLog(@"File exists.");
    } else {
        NSLog(@"File not exists.");
    }
} else {
    NSLog(@"Error!");
}


[3].删除Object

NSString * deleteObjKeyStr = @"18308080808-201706281539328.png";
//删除Object
OSSDeleteObjectRequest * delete = [OSSDeleteObjectRequest new];
delete.bucketName = Ali_bucketName;
delete.objectKey = deleteObjKeyStr;
OSSTask * deleteTask = [client deleteObject:delete];
[deleteTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        // ...
        //只显示文字
        MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
        hud.mode = MBProgressHUDModeText;
        hud.label.text = @"删除成功!";
        hud.margin = 10.f;
        hud.offset = CGPointMake(0, 0.f);
        hud.removeFromSuperViewOnHide = YES;
        [hud hideAnimated:YES afterDelay:1.5f];
    }
    return nil;
}];
// [deleteTask waitUntilFinished];



其实数据管理这一步,处理小文件(小图片,小文档)是不太需要的;但处理大文件(音乐、视频)还是必要的!

我个人建议:处理!(不要因为别人跟你说不用处理,就不去处理!)
这多多少少是一个程序员的素质逻辑缜密性的体现!😂😂😂😂😂😂😂😂










goyohol's essay

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

推荐阅读更多精彩内容