我们App又新添加了视频分享,选择的是七牛云存储,上传之后分享链接,但是视频比较大,所以需要添加取消选项,七牛云的取消上传也是不容易找到,试了一会才搞定,看代码
@interface ImageFileManager(){
__block BOOL _flag; //这点要注意
QNUploadOption *_opt;
QNUploadManager *_upManager;
}
@end
- (void)updateWithuccess:(void (^)(NSString *url))success progressHandler:(void (^)(float percent))progress failure:(void (^)(NSString *reason))failure{
if (!self.data) {
failure(@"失败");
return;
}
_flag = NO;
_opt = [[QNUploadOption alloc] initWithMime:nil progressHandler:^(NSString *key, float percent) {
progress(percent);
} params:nil checkCrc:NO cancellationSignal:^BOOL {
return _flag;
}];
_upManager = [QNUploadManager sharedInstanceWithConfiguration:nil];
[self uploadSuccess:success failure:failure];
}
- (void)uploadSuccess:(void (^)(NSString *url))success failure:(void (^)(NSString *reason))failure{
if ([Tool returnValueforKey:kUserQiniuToken]) {
[_upManager putData:self.data key:self.fileName token:[Tool returnValueforKey:kUserQiniuToken] complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
NSLog(@"我是七牛1-------%@", info);
NSLog(@"我是七牛1-------%@", resp);
if (info.statusCode == 200 && resp) {
NSString *url= [NSString stringWithFormat:@"%@%@", QiNiuBaseUrl, resp[@"key"]];
if (success) {
success(url);
}
} else if (info.statusCode == -999){
if (failure) {
failure(@"取消了");
}
} else {
if (failure) {
failure(@"失败");
}
}
} option:_opt];
}else{
[NetWorkManager getQiniuToken:^(NSString *token) { //七牛的token现在不允许本地生成了(也可以去看别人写的库),要服务端生成
[_upManager putData:self.data key:self.fileName token:token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
SRQLog(@"我是七牛2-------%@", info);
SRQLog(@"我是七牛2-------%@", resp);
if (info.statusCode == 200 && resp) {
NSString *url= [NSString stringWithFormat:@"%@%@", QiNiuBaseUrl, resp[@"key"]];
if (success) {
success(url);
}
} else if (info.statusCode == -999){
if (failure) {
failure(@"取消了");
}
}else {
if (failure) {
failure(@"失败");
}
}
} option:_opt];
}];
}
}
- (void)cancelUpload{
_flag = YES;
NSLog(@"取消上传了");
}
由于我服务器PHP版本过低,只能用老版的SDK,我这里只是随便写个用用,不过都很简单,看看文档就行了
秘钥管理 能够查到
$secretKey = '******';
Qiniu_SetKeys($accessKey, $secretKey);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$upToken = $putPolicy->Token(null);
echo $upToken;