Я создал приложение, загружающее файл plist с Amazon S3. Я использовал AFAmazonS3Client клиент, основанный на базе AFNetworking.Поврежденные файлы, загруженные с Amazon S3 с использованием AFAmazonS3Client
-(void) getFile:(NSString *)fileName{
self.s3Manager = [[AFAmazonS3Manager alloc] initWithAccessKeyID:@"..." secret:@"..."];
self.s3Manager.requestSerializer.region = AFAmazonS3SAEast1Region;
self.s3Manager.requestSerializer.bucket = @"verba";
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
documentsPath = [documentsPath stringByAppendingPathComponent:fileName];
NSOutputStream *stream = [[NSOutputStream alloc] initToFileAtPath:documentsPath append:NO];
[self.s3Manager getObjectWithPath:@""
outputStream:stream
progress:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
NSLog(@"%f%% Downloaded", (totalBytesRead/(totalBytesExpectedToRead * 1.0f) * 100));
} success:^(id responseObject) {
NSLog(@"Download Complete");
} failure:^(NSError *error) {
NSLog(@"Error: %@", error);
}];
}
Затем я проверил, был ли файл plist в папке с документами. И это было. Поэтому я попытался открыть файл plist, и результат был равен нулю:
-(NSString*) loadListName:(NSString*)fileName{
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* filePath = [documentsPath stringByAppendingPathComponent:fileName];
NSDictionary *temp;
if ([[NSFileManager defaultManager] fileExistsAtPath: filePath]){
temp = [NSDictionary dictionaryWithContentsOfFile:filePath];
} else {
NSLog(@"File not found.");
}
NSString *listName = [temp objectForKey:@"name"];
return listName;
}
Итак, я попытался добавить файл plist вручную. Я загрузил и скопировал его в папку документов, а затем dictionaryWithContentsOfFile
мог открыть файл. Поэтому я предполагаю, что файл plist был поврежден, когда я загружаю файл, используя AFAmazonS3Client.
Что я делаю неправильно?
Update 1
Я понимаю, что каждый файл, который я скачал с S3 повреждены. Я не знаю, обрабатываю ли я NSOutputStream правильно или, возможно, другое.
Для отладки прочитать файл как '' NSString' и NSSLog' он. Если проблема не очевидна, попробуйте проверить plist с приложением. Или добавьте содержимое полосы в свой вопрос, если он не длинный или конфиденциальный. – zaph