采用NSFileHandle对文件数据进行逐段读取上传
要与服务端研发人员约定好上传完毕规则,区分何时上传完毕,进行文件合并。
上传采用NSURLSession/AFN等,逐段上传。
使用OSS的iOS SDK断点续传上传功能上传文件时,报Access denied by authorizer's policy错误,报错原因是搭建的STS服务器中Policy设置存在问题,通过STS的授权访问被拒绝。请参见使用STS临时访问凭证访问OSS,进行排查。
断点续传失败,根据提供的集成日志,查看使用老版本的断点续传,老版本的断点续传是集成的分片上传,需要记录上传的分片ID和UploadIP,实现比较麻烦,推荐使用新版本的iOS SDK,目前该SDK分装好了分片上传,增加了设置断点记录的保存文件夹。如果任务失败,在下次重新启动任务,上传同一文件到同一Bucket、Object时,将从断点记录处继续上传,提供以下测试的代码,设置缓存的目录文件。断点续传上传的示例代码请参见断点续传上传。
- (IBAction)resumeInterruptedDownload:(id)sender{NSURL *url = [NSURL URLWithString:ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]NSString *downloadPath = @"/Users/ben/Desktop/asi.png"//当request完成时,整个文件会被移动到这里[request setDownloadDestinationPath:downloadPath]//这个文件已经被下载了一部分[request setTemporaryFileDownloadPath:@"/Users/ben/Desktop/asi.png.download"][request setAllowResumeForFileDownloads:YES][request startSynchronous]//整个文件将会在这里NSString *theContent = [NSString stringWithContentsOfFile:downloadPath]}断点续传的工作原理是读取temporaryFileDownloadPath的文件的大小,并使用Range: bytes=x HTTP头来请求剩余的文件内容。ASIHTTPRequest并不检测是否存在Accept-Ranges头(因为额外的HEAD头请求会消耗额外的资源),所以只有确定服务器支持断点续传下载时,再使用这个特性。转载,仅供参考。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)