typedef void(^AliyunOSSSuccessBlock) (NSString* fileName);
typedef void(^AliyunOSSFailBlock)(NSString *errorDescription, NSInteger errorCode);
typedef void(^AliyunOSSProgressBlock) (int64_t bytesSent, int64_t totalBytes);
/*!
OSS断点续传
@param fileName oss的文件名,最好是随机名字
@param fileUrl 本地的文件名,断点续传只能用本地文件
*/
- (void)resumableUploadWithName : (NSString *)fileName
fileUrl : (NSURL* ) fileUrl
successes:(AliyunOSSSuccessBlock)success
fail:(AliyunOSSFailBlock)fail
progress:(AliyunOSSProgressBlock)progress
{
// 获得UploadId进行上传,如果任务失败并且可以续传,利用同一个UploadId可以上传同一文件到同一个OSS上的存储对象
OSSResumableUploadRequest * resumableUpload = [OSSResumableUploadRequest new];
resumableUpload.bucketName = OSSBucketKey;
resumableUpload.objectKey = [NSString stringWithFormat:@"%@%@", OSSObjectKey, fileName];
resumableUpload.partSize = 1024 * 1024;
resumableUpload.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
progress(totalByteSent, totalBytesExpectedToSend);
};
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
//设置断点记录文件
resumableUpload.recordDirectoryPath = cachesDir;
//设置NO,取消时,不删除断点记录文件,如果不进行设置,默认YES,是会删除断点记录文件,下次再进行上传时会重新上传。
resumableUpload.deleteUploadIdOnCancelling = NO;
resumableUpload.uploadingFileURL = fileUrl;
OSSTask * resumeTask = [client resumableUpload:resumableUpload];
[resumeTask continueWithBlock:^id(OSSTask *task) {
if (task.error) {
NSLog(@"error: %@", task.error);
fail(task.error.localizedDescription, task.error.code);
if ([task.error.domain isEqualToString:OSSClientErrorDomain] && task.error.code == OSSClientErrorCodeCannotResumeUpload) {
// 该任务无法续传,需要获取新的uploadId重新上传
} else {
}
} else {
success(fileName);
}
return nil;
}];
}
iOS上实现阿里云OSS断点续传
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 马化腾:你们可以膜拜阿里巴巴和马云,为何要吐槽我的腾讯? 吐槽马化腾 阿里巴巴和腾讯两大科技公司,都是在中国或者世...