OSS的iOS SDK断点续传故障排查

OSS的iOS SDK断点续传故障排查

更新时间:2019-12-13 16:46:45

问题描述

使用OSS的iOS SDK断点续传故障排查思路。

 

解决方案

  1. 使用OSS的iOS SDK断点续传时,报Access denied by authorizer's policy错误,排查发现是搭建的STS服务器中Policy设置存在问题,进行排查授权策略,详见STS临时授权访问

  1. 断点续传失败,根据提供的集成日志,查看使用老版本的断点续传,老版本的断点续传是集成的分片上传,需要记录上传的分片ID和UploadIP,实现比较麻烦,推荐使用新版本的iOS SDK,目前该SDK分装好了分片上传,增加了设置断点记录的保存文件夹。如果任务失败,在下次重新启动任务,上传同一文件到同一Bucket、Object时,将从断点记录处继续上传,提供测试的代码,关键部分代码设置缓存的目录文件。

    NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
    resumableUpload.recordDirectoryPath = cachesDir;
  1. 上传可以成功,但上传过程中终止上传,再重新上传,发现每次都是重新进行上传,测试断点上传并没有成功,搭建环境进行测试,获取到缓存文件中记录的断点文件信息,发现为空,也就是每次断点后都是没有生成断点信息,查看打印的日志,发现再次重传和上传断点处使用的UploadId不一致,设置如下所示。

    NSString* content = [NSString stringWithContentsOfFile:thepath encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"读取内容:\n%@",content);
  1. 没有打开本地持久保存断点记录的调用方式,导致每次生成的断点记录在中断传输后都会自动的清除掉,增加如下信息的设置,保留断点记录。

    resumableUpload.deleteUploadIdOnCancelling = NO

 

适用于

  • 对象存储OSS