七牛iOS断点续传。

官方给出的例子中没有看明白,求大神给我讲一下

阅读 4.9k
1 个回答

首先把框架加入项目,在AppDelegate或其他什么需要的地方,引入头文件

#import <QiniuSDK.h> 
...
    NSString token = @"从服务端SDK获取"; //这里的token是你的存储空间的唯一标识
    //QNUploadManager 是上传类
    QNUploadManager *upManager = [[QNUploadManager alloc] init];
    NSData *data = [@"Hello, World!" dataUsingEncoding : NSUTF8StringEncoding];
    //这里将data上传,key是"hello"
    [upManager putData:data key:@"hello" token:token
        complete: ^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
        NSLog(@"%@", info);
        NSLog(@"%@", resp);
    } option:nil];
...

上传进度有个单独的block用来回调,你必须生成一个QNUploadOption类,并把它传入上面代码的option参数

typedef void (^QNUpProgressHandler)(NSString *key, float percent);

//option实例的例子
QNUploadOption *opt = [[QNUploadOption alloc] initWithMime:@"text/plain" progressHandler:nil params:@{ @"x:foo":@"fooval" } checkCrc:YES cancellationSignal:nil];

注意,上面的option例子中,progressHandler:nilcancellationSignal:nil都是空,你如果需要断点续传,一般需要传入cancellationSignal,因为只有两种情况,一个是用户取消了,一个是下载中断了。

断点续传

    NSError *error;
    QNFileRecorder *file = [QNFileRecorder fileRecorderWithFolder:@"保存目录" error:&error];
    //check error
    QNUploadManager *upManager = [[QNUploadManager alloc] initWithRecorder:file];

要实现断点续传,需要在QNUploadManager初始化时候,传入一个QNFileRecorder实例,而不腻像第一个例子中直接使用init方法,而是用initWithRecorder:方法。文档中说“SDK自带了将进度保存到文件的方法”,所已其他不需要你操心了。你可以实现cancellationSignal:nil测试。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题