使用OSS的iOS SDK断点续传故障排查思路。
使用OSS的iOS SDK断点续传时,报Access denied by authorizer's policy
错误,排查发现是搭建的STS服务器中Policy设置存在问题,进行排查授权策略,详见STS临时授权访问。
断点续传失败,根据提供的集成日志,查看使用老版本的断点续传,老版本的断点续传是集成的分片上传,需要记录上传的分片ID和UploadIP,实现比较麻烦,推荐使用新版本的iOS SDK,目前该SDK分装好了分片上传,增加了设置断点记录的保存文件夹。如果任务失败,在下次重新启动任务,上传同一文件到同一Bucket、Object时,将从断点记录处继续上传,提供测试的代码,关键部分代码设置缓存的目录文件。
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
resumableUpload.recordDirectoryPath = cachesDir;
上传可以成功,但上传过程中终止上传,再重新上传,发现每次都是重新进行上传,测试断点上传并没有成功,搭建环境进行测试,获取到缓存文件中记录的断点文件信息,发现为空,也就是每次断点后都是没有生成断点信息,查看打印的日志,发现再次重传和上传断点处使用的UploadId不一致,设置如下所示。
NSString* content = [NSString stringWithContentsOfFile:thepath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"读取内容:\n%@",content);
没有打开本地持久保存断点记录的调用方式,导致每次生成的断点记录在中断传输后都会自动的清除掉,增加如下信息的设置,保留断点记录。
resumableUpload.deleteUploadIdOnCancelling = NO
对象存储OSS
在文档使用中是否遇到以下问题
更多建议
匿名提交