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