我有一个使用 Core Data 进行持久数据存储的 iOS 应用程序。我将 Dropbox 集成为用户执行持久存储文件 (appname.sqlite) 备份的一种方式。
UIButton 调用一个方法来查看 Dropbox 上是否已经存在文件:
if([[DBSession sharedSession]isLinked])
{
NSString *folderName = [[self.dateFormatter stringFromDate:[NSDate date]] stringByReplacingOccurrencesOfString:@"/" withString:@"-"];
NSString *destinationPath = [NSString stringWithFormat:@"/GradeBook Pro/Backup/%@/",folderName];
self.metadataIndex = METADATA_REQUEST_BACKUP;
[self.restClient loadMetadata:destinationPath];
}
loadMetadata 委托方法使用现有文件的版本号(如果存在)启动上传。
-(void) restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata
{
SAVE_CORE_DATA;
NSString *folderName = [[self.dateFormatter stringFromDate:[NSDate date]] stringByReplacingOccurrencesOfString:@"/" withString:@"-"];
NSString *documentsDirectory = DOCUMENTS_DIRECTORY;
NSString *sourcePath = [NSString stringWithFormat:@"%@/GradeBookPro.sqlite", documentsDirectory];
NSString *destinationPath = [NSString stringWithFormat:@"/GradeBook Pro/Backup/%@/",folderName];
[self.restClient uploadFile:@"GradeBookPro.sqlite" toPath:destinationPath withParentRev:[[metadata.contents lastObject]rev] fromPath:sourcePath];
}
这适用于通过完美网络连接的合理的小文件或大文件,但上传过程中的任何小错误都会取消整个过程。我想切换到使用分块上传方法,但我不知道如何实际执行 .sqlite 文件的“分块”。
我似乎找不到任何使用分块上传的示例应用程序,我可以从中学习,文档只是说要分块提供文件。
所以,我的问题是:
分块上传是解决通过可能不稳定的网络连接上传大文件的用户问题的正确方法吗?
你能指点我“分块”文件的示例代码/应用程序/文档吗?我对 Dropbox SDK 很满意。
谢谢!