ios 七牛云上传流程
2015-09-17 10:16
573 查看
公司开始采用七牛的云存储,看了ios的官方文档,有点不明所以,在网上搜集整理了一下从生成token到上传的整个流程1.生成uploadToken 生成时头文件需引入
#import"QiniuSDK.h" #import"GTM_Base64.h" #import<CommonCrypto/CommonDigest.h> #include<CommonCrypto/CommonHMAC.h>#pragma mark - 生成token
- (NSString *)token{//七牛的Access/Secret Key 查看地址:https://portal.qiniu.com/setting/keyreturn [selfmakeToken:QNAccessKeysecretKey:QNSecrectKey];}// 生成一个token
- (NSString *)makeToken:(NSString *)accessKey secretKey:(NSString *)secretKey{constchar *secretKeyStr = [secretKeyUTF8String];NSString *policy = [selfmarshal];NSData *policyData = [policydataUsingEncoding:NSUTF8StringEncoding];NSString *encodedPolicy = [GTM_Base64stringByWebSafeEncodingData:policyDatapadded:TRUE];constchar *encodedPolicyStr = [encodedPolicycStringUsingEncoding:NSUTF8StringEncoding];char digestStr[CC_SHA1_DIGEST_LENGTH];bzero(digestStr,0);CCHmac(kCCHmacAlgSHA1, secretKeyStr,strlen(secretKeyStr), encodedPolicyStr,strlen(encodedPolicyStr), digestStr);NSString *encodedDigest = [GTM_Base64stringByWebSafeEncodingBytes:digestStrlength:CC_SHA1_DIGEST_LENGTHpadded:TRUE];NSString *token = [NSStringstringWithFormat:@"%@:%@:%@", accessKey, encodedDigest, encodedPolicy];return token;}// Marshal as JSON format string.- (NSString *)marshal
{time_t deadline;time(&deadline);deadline += 3600;// 1 hour by default.NSNumber *deadlineNumber = [NSNumbernumberWithLongLong:deadline];NSMutableDictionary *dic = [NSMutableDictionarydictionary];[dic setObject:QNPathforKey:@"scope"];[dic setObject:deadlineNumberforKey:@"deadline"];NSString *json = [selfdictionaryToJson:dic];return json;}// 字典转json字符
- (NSString*)dictionaryToJson:(NSDictionary *)dic{if (!dic) {return@"";}NSError *parseError =nil;NSData *jsonData = [NSJSONSerializationdataWithJSONObject:dicoptions:NSJSONWritingPrettyPrintederror:&parseError];return [[NSStringalloc]initWithData:jsonDataencoding:NSUTF8StringEncoding];}2.一张图片上传图片示例
- (NSString *)uploadImageWithFullPath:(NSString *)imagePath{__blockQNResponseInfo *testInfo =nil;__blockNSDictionary *testResp =nil;QNUploadManager *manager = [QNUploadManagersharedInstanceWithConfiguration:nil];[manager putFile:imagePathkey:[selfqnFilePathConnectName]token:[selftoken]complete: ^(QNResponseInfo *info,NSString *key,NSDictionary *resp) {testInfo = info;testResp = resp;} option:nil];//获取返回的Key作为文件在云中的名字返回}//生成图片在七牛云的存储路径
- (NSString *)qnFilePathConnectName{//格式 @"Uploads/Picture/2015-09-16/55f959e1ee25a.jpg";NSDateFormatter *formatter = [[NSDateFormatteralloc]init];[formatter setDateFormat:@"yyyy-MM-dd"];NSString *now = [formatterstringFromDate:[NSDatedate]];char data[16];//十六位防重字符for (int x=0;x<16;data[x++] = (char)('A' + (arc4random_uniform(26))));NSString *number = [[NSStringalloc]initWithBytes:datalength:16encoding:NSUTF8StringEncoding];//当前时间NSInteger interval = (NSInteger)[[NSDatedate]timeIntervalSince1970];NSString *name = [NSStringstringWithFormat:@"Uploads/Picture/%@/%@%ld.jpg",now,number,interval];return name;}[b]3.注意事项[/b]最新七牛的sdk依赖HappyDNS 下载地址:https://github.com/qiniu/happy-dns-objc配置中的一些问题解决方法:http://kb.qiniu.com/5t06228o官方生成token教程地址:http://developer.qiniu.com/docs/v6/api/reference/security/upload-token.html 经过测试这个教程有些地方是错误的,scope传my-bucket等在七牛中的文件夹就可以了,不要加后面文件的名字。也不要传returnBody参数,传了可能生成token错误
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- Python Web框架Flask中使用百度云存储BCS实例
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- iOS开发中实现邮件和短信发送的简单示例
- ios通过按钮点击异步加载图片