iPhone: как сохранить файл из S3 с помощью AWS iOS SDK - PullRequest
2 голосов
/ 03 апреля 2011

Я ищу супер простой пример того, как сделать getObject из S3, используя их iOS SDK: http://aws.amazon.com/sdkforios/

В частности, часть о том, как записать результаты ответа в файл.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Кажется, проблема в том, что, хотя S3GetObjectReponse имеет setOutputStream, единственное способ получить S3GetObjectResponse через [[AmazonClientManager s3] getObject:getObjectRequest]; И тогда может быть уже слишком поздно.

Итак, установите выходной поток в запросе:

S3GetObjectRequest  *getObjectRequest  = [[[S3GetObjectRequest alloc]  ....];
getObjectRequest.outputStream = ...;

См. S3GetObjectRequest:

- (NSOutputStream *) outputStream 

[read, write, assign]

Получает и устанавливает выходной поток для данных ответа.

Если это установлено, то ответ будет записывать данные в предоставленный поток, а не делать их доступными через свойство data.

Поток должен быть открыт и запланирован в нужном цикле выполнения. SDK не закроет поток.

1 голос
/ 05 апреля 2011

Я посмотрел документацию по API для S3GetObjectResponse.h:

00020 @interface S3GetObjectResponse : S3Response {
00021         NSString *contentType;
00022         NSMutableDictionary *metadata;
00023         NSOutputStream *outputStream;
00024 }
00025 
00027 @property(nonatomic, retain) NSString* contentType;
00028 
00033 -(NSString *)getMetadataForKey:(NSString *)aKey;
00034 
00041 -(void)setOutputStream:(NSOutputStream *)stream;

Возможно, вы можете установить ответ S3 NSOutputStream, используя метод -setOutputStream:. Затем вы могли бы записать этот поток в файл, используя один из NSOutputStream методов экземпляра . Для приложений iOS вы можете записать данные в файл в одну из трех определенных папок .

...