2012-07-03 3 views
0

Я использую Amazon S3 AFNetworking Client, чтобы попытаться загрузить файлы на S3, и я столкнулся с проблемами. Я получаю плохой ответ URL-адреса при работе в симуляторе и ответ 405 при работе на устройстве. При получении ответа 405 в журнале регистрируется 100% файлов. Я не уверен, буду ли я делать это правильно или нет. Это мой код:AFNetworking AFAmazonS3Client issues uploading

AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:kAccessKeyID 
                     secret:kSecret]; 
    s3Client.bucket = kBucket; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documents = [paths objectAtIndex:0]; 
    NSString *path = [documents stringByAppendingPathComponent:@"test.jpeg"]; 

    [s3Client postObjectWithFile:path parameters:nil progress:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { 
     NSLog(@"%f%% Uploaded", (totalBytesWritten/(totalBytesExpectedToWrite * 1.0f) * 100)); 
    } success:^(id responseObject) { 
     NSLog(@"Upload Complete"); 
    } failure:^(NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 

ответ

0

Только предположение, но

AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:@"kAccessKeyID" 
                    secret:@"kSecret"]; 

kAccessKeyId/kSecret являются константами, да? Обычно вы определяете константы как

#define kAccessKeyId @"myKeyId" 

Таким образом, вы не хотите добавлять дополнительные кавычки вокруг них. Я действительно удивлен, что компилятор разрешает это. Ваша линия должна выглядеть как

AFAmazonS3Client *s3Client = [[AFAmazonS3Client alloc] initWithAccessKeyID:kAccessKeyID 
                    secret:kSecret]; 

Некоторые другие общие отладки:

  • Выйти на путь, который вы пытаетесь получить доступ, и убедитесь, что у вас есть необходимое количество слешей.
  • Ошибка 405 обычно указывает, что метод, который вы используете для доступа к определенному URL-адресу, недопустим. Можете ли вы опубликовать/у вас есть разрешения на публикацию? Это касается моей точки зрения о том, что вы случайно случайно добавили двойные кавычки, когда они вам не нужны, и поэтому не будут правильно обращаться к вашему хранилищу S3.
+1

Извините, отредактировано это в stackoverflow, чтобы я не раскрывал учетные данные и не осознавал ошибку! Что касается прав доступа, я ничего не изменил с тех пор, как создал ведро или не создал политику ведра. Нужно ли мне что-либо менять или если по умолчанию будет достаточно? – morcutt

+0

Изменен от POST до PUT и теперь он работает. Примите ваш ответ хотя. – morcutt

+0

Awesome. Да, я подумал, может быть, POST мог быть проблемой. Спасибо за согласие. –