iOS 可取消的七牛云上传

/ 0评 / 0

我们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;

评论已关闭。