- (void)template:(int)***size*** pos:(float)***pos*** {
NSURL *tempFile = [QNTempFile createTempfileWithSize:size * 1024];
NSString *keyUp = [NSString stringWithFormat:@"r-%dk", size];
__block NSString *key = nil;
__block QNResponseInfo *info = nil;
__block BOOL flag = NO;
QNUploadOption *opt = [[QNUploadOption alloc] initWithMime:nil progressHandler: ^(NSString *key, float percent) {
if (percent >= pos) {
flag = YES;
}
NSLog(@"progress %f", percent);
} params:nil checkCrc:NO cancellationSignal: ^BOOL () {
return flag;
}];
[_upManager putFile:tempFile.path key:keyUp token:g_token complete: ^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
key = k;
info = i;
} option:opt];
AGWW_WAIT_WHILE(key == nil, 60 * 30);
NSLog(@"info %@", info);
XCTAssert(info.statusCode == kQNRequestCancelled, @"Pass");
XCTAssert([keyUp isEqualToString:key], @"Pass");
// continue
key = nil;
info = nil;
__block BOOL failed = NO;
opt = [[QNUploadOption alloc] initWithMime:nil progressHandler: ^(NSString *key, float percent) {
if (percent < pos - kQNChunkSize / (size * 1024.0)) {
failed = YES;
}
NSLog(@"continue progress %f", percent);
} params:nil checkCrc:NO cancellationSignal:nil];
[_upManager putFile:tempFile.path key:keyUp token:g_token complete: ^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
key = k;
info = i;
} option:opt];
AGWW_WAIT_WHILE(key == nil, 60 * 30);
NSLog(@"info %@", info);
XCTAssert(info.isOK, @"Pass");
XCTAssert(!failed, @"Pass");
XCTAssert([keyUp isEqualToString:key], @"Pass");
[QNTempFile removeTempfile:tempFile];
}
uploadManager
中的各上传字段的参数含义可以参考 http://cocoadocs.org/docsets/Qiniu/7.0.9.1/Classes/QNUploadManager.htm...;另外断点续传在七牛的iOS-SDK中,默认大于512KB的资源就开始调用分片上传的接口,当然这个是内部函数的调用,不需要在使用uploadManager
的时候考虑这些问题。