七牛iOS断点续传。

发布于 2022-09-01 23:52:53 字数 29 浏览 30 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陪你搞怪i 2022-09-08 23:52:53

首先把框架加入项目,在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测试。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文