七牛iOS断点续传。
大家讲道理
大家讲道理 2017-04-17 17:18:59
[iOS讨论组]

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(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测试。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号