我正在运行Amazon AWSS3 iOS SDK版本2.3.2,并使用AWSS3TransferUtility成功实现了文件上传和下载。在过去几周的某些时候,我们开始经历失败。如果我尝试从我的文档目录中上传以前保存的文件:
/var/mobile/Containers/Data/Application/F505C2A6-3CA3-47F4-87A1-3FD2CFDE932D/Documents/1098/1098.png
uploadFile方法报告以下内容:
无法读取文件:///var/mobile/Containers/Data/Application/F505C2A6-3CA3-47F4-87A1-3FD2CFDE932D/Documents/1098/1098.png
如果我尝试使用uploadData方法而不是uploadFile,则会收到以下错误:
无法在file:/// private / var / mobile / Containers / Data / Application / 652CAEA4-9174-4408-AFFD-760B275FAB5B / tmp / ea3d80e0cfabcedbe25cc9403ef3bca5 / 84B78171-E4CA-4F02-9297-F30756657B14-4889-中读取文件00000AB32D416253.tmp
问题似乎在于uploadFile和uploadData方法正在寻找以“///”开头的文件。
我对此进行了研究,发现不久前发布了以下帖子,其中包括相同的情况:未能读取以前保存到文档目录中的文件。
Can't read saved file from documents directory
每次检索uploadData方法的文件数据或检索filelUpload方法的文件路径时,我都会按如下方式重新查询文档目录:
- (NSString*) getDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsDirectory = [paths objectAtIndex:0];
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:docsDirectory];
if (!exists) {
NSError *error;
exists = [[NSFileManager defaultManager] createDirectoryAtPath:docsDirectory withIntermediateDirectories:YES attributes:nil error:&error];
if (exists)
return docsDirectory;
}
else {
return docsDirectory;
}
return nil;
}
建议?