上傳圖片之前說過,但是今天在上傳錄音時遇到問題。還是用putData 的方式 發(fā)現(xiàn)傳上去并不能播放。
需要將key加后綴.mp3即可
上傳時調(diào)用
NSString *key = [NSString stringWithFormat:@"%@.mp3",self.qiniuImageName];
NSData *urlData = [NSData dataWithContentsOfURL:urlPlay];
[self.upManager putData:urlData key:key token:self.token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
NSLog(@"七牛錯誤信息%@", info.error);
NSLog(@"七牛返回信息%@", resp);
if ([resp objectForKey:@"key"] != nil ||![[resp objectForKey:@"key"] isEqualToString:@""]) {
}
} option:nil];
這樣就好了
附上客戶端直傳方式代碼
需要導(dǎo)入
- <CommonCrypto/CommonCrypto.h>
- "QN_GTM_Base64.h"
- (NSString *)makeToken:(NSString *)accessKey secretKey:(NSString *)secretKey
{
const char *secretKeyStr = [secretKey UTF8String];
NSString *policy = [self marshal];
NSData *policyData = [policy dataUsingEncoding:NSUTF8StringEncoding];
NSString *encodedPolicy = [QN_GTM_Base64 stringByWebSafeEncodingData:policyData padded:TRUE];
const char *encodedPolicyStr = [encodedPolicy cStringUsingEncoding:NSUTF8StringEncoding];
char digestStr[CC_SHA1_DIGEST_LENGTH];
bzero(digestStr, 0);
CCHmac(kCCHmacAlgSHA1, secretKeyStr, strlen(secretKeyStr), encodedPolicyStr, strlen(encodedPolicyStr), digestStr);
NSString *encodedDigest = [QN_GTM_Base64 stringByWebSafeEncodingBytes:digestStr length:CC_SHA1_DIGEST_LENGTH padded:TRUE];
self.token = [NSString stringWithFormat:@"%@:%@:%@", accessKey, encodedDigest, encodedPolicy];
return self.token;//得到了token
}
- (NSString *)marshal
{
time_t deadline;
time(&deadline);//返回當(dāng)前系統(tǒng)時間
deadline += (self.expires > 0) ? self.expires : 3600; // +3600秒,即默認(rèn)token保存1小時.
NSNumber *deadlineNumber = [NSNumber numberWithLongLong:deadline];
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:self.qiniuFilekey forKey:@"scope"];
[dic setObject:deadlineNumber forKey:@"deadline"];
NSString *json = [dic mj_JSONString];
return json;
}
//生成uuid
- (NSString *)getUniqueStrByUUID
{
CFUUIDRef uuidObj = CFUUIDCreate(nil);//create a new UUID
//get the string representation of the UUID
NSString *str = (__bridge_transfer NSString *)CFUUIDCreateString(nil, uuidObj);
CFRelease(uuidObj);
return str ;
}
viewdidload調(diào)用
self.qiniuImageName = [self getUniqueStrByUUID];
self.qiniuFilekey = QINIUFOLDER;
self.upManager = [[QNUploadManager alloc]init];
[self makeToken:QINIUAk secretKey:QINIUSK];