相信許多公司項目有用過七牛云存儲來上傳圖片,但如果碰到更大的視頻音頻上傳,則需要考慮斷網,強退等突發情況,從用戶體驗上來說肯定不希望重新下載,那么在這里就需要用到斷點續傳,下面來簡單的講一下如何使用七牛的斷點續傳
首先用QNFileRecorder用來記錄斷點續傳的文件
QNFileRecorder *file = [QNFileRecorder fileRecorderWithFolder:[NSTemporaryDirectory() stringByAppendingString:@"qiniutest"] error:&error];
NSLog(@"recorder error %@", error);
_uploadManager = [[QNUploadManager alloc] initWithRecorder:file];
七牛斷點續傳是分片的,也可以根據需求修改配置,更改分片大小,chunkSize分片大小,recorder記錄文件
QNConfiguration *config = [QNConfiguration build:^(QNConfigurationBuilder *builder) {
builder.chunkSize = 256 * 1024;
builder.recorder = file;
}];
_uploadManager = [[QNUploadManager alloc] initWithConfiguration:config]
QNUploadOption傳入一些高級選項,mime:mime類型, progressHandler:進度函數,params:自定義服務器回調參數,checkCrc:是否進行crc檢查 cancellationSignal:中途取消函數
QNUploadOption *uploadOption = [[QNUploadOption alloc] initWithMime:nil progressHandler:^(NSString *key, float percent) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"progress = %f ",percent);
});
} params:nil checkCrc:NO cancellationSignal:^BOOL{
return NO;
}];
token可以在前端自己生成,而且快速方便,但為了信息安全,這些都應由服務器完成,所以開始上傳前先向服務器發送請求獲取token,拿到token以后再開始文件上傳
NSString *path = @"文件路徑";
NSString *key = @"上傳到云存儲的key";
NSString *token = @"上傳需要的token, 由服務器生成";
[_uploadManager putFile:path key:key token:token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
if (info.isOK) {
NSLog(@"success!");
}
} option:uploadOption];
以上就是七牛斷點續傳的一個簡單流程