Как загрузить файл из S3 в приложение для iPhone? - PullRequest
4 голосов
/ 26 июля 2011

Я новичок в разработке для iPhone. Я занимаюсь разработкой приложения для iPhone, которое должно открывать файлы, хранящиеся в сервисе Amazon S3.

Как загрузить файл из S3 в приложение для iPhone? Я попробовал SDK от Amazon, но, похоже, они не предоставляют средства для загрузки и сохранения файла. Как мне получить URL файла из S3 и сохранить его в моем приложении?

Ответы [ 2 ]

3 голосов
/ 24 ноября 2011

Если вы не можете позволить себе роскошь использовать ASI и / или застряли в AWSiOS SDK, это не сильно отличается:

/* borrowed from Maurício Linhares's answer */
NSString *secretAccessKey = @"my-secret-access-key";
NSString *accessKey = @"my-access-key";
NSString *bucket = @"my-bucket";
NSString *path = @"path/to/the/object";
/********************************************/

AmazonCredentials *credentials = [[AmazonCredentials alloc] initWithAccessKey: accessKey withSecretKey: secretAccessKey];
AmazonS3Client *connection = [[AmazonS3Client alloc] initWithCredentials: credentials];

S3GetObjectRequest *downloadRequest = [[[S3GetObjectRequest alloc] initWithKey:path withBucket: bucket] autorelease];
[downloadRequest setDelegate: self]; /* only needed for delegate (see below) */
S3GetObjectResponse *downloadResponse = [self.awsConnection getObject: downloadRequest];

Затем вы можете посмотреть downloadResponse.body и downloadResponse.httpStatusCode, предпочтительно в делегате:

-(void)request: (S3Request *)request didCompleteWithResponse: (S3Response *) response {
    NSLog(@"Download finished (%d)",response.httpStatusCode);
    /* do something with response.body and response.httpStatusCode */
    /* if you have multiple requests, you can check request arg */
}   
3 голосов
/ 26 июля 2011

Я всегда использую библиотеку ASIHttpRequest , чтобы сделать это, и это довольно просто, вот пример кода с их сайта:

NSString *secretAccessKey = @"my-secret-access-key";
NSString *accessKey = @"my-access-key";
NSString *bucket = @"my-bucket";
NSString *path = @"path/to/the/object";

ASIS3ObjectRequest *request = [ASIS3ObjectRequest requestWithBucket:bucket key:path];
[request setSecretAccessKey:secretAccessKey];
[request setAccessKey:accessKey];
[request startSynchronous];
if (![request error]) {
  NSData *data = [request responseData];
} else {
  NSLog(@"%@",[[request error] localizedDescription]);
}

Вы не можете получить легче, чем это:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...