2015-02-23 4 views
1

Привет, я пытаюсь загрузить файл в мое ведро на AWS s3 без каких-либо успехов.Загрузить файл базы данных с ios на AWS s3 issue

Мне просто нужно загрузить файл с какого-либо приложения с некоторых телефонов.

я использую AWS SDK Version2 КСН 8.

это моя функция для загрузки БД:

ЗАГРУЗИТЬ

NSString *fileName = DB_File; 
     NSString *directoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

    NSString *filePath = [directoryPath stringByAppendingPathComponent:fileName]; 
    NSData *fileData = [NSData dataWithContentsOfFile:filePath]; 





    AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; 
    AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; 
    uploadRequest.body = [NSURL fileURLWithPath:filePath]; 
    uploadRequest.key = fileName; 
    uploadRequest.bucket = @"xxxx"; 

    [[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) { 
     if (task.error) { 
      if ([task.error.domain isEqualToString:AWSS3TransferManagerErrorDomain]) { 
       switch (task.error.code) { 
        case AWSS3TransferManagerErrorCancelled: 
        case AWSS3TransferManagerErrorPaused: 
        { 
        NSLog(@"Upload failed: [%@]", task.error); 
        } 
         break; 

        default: 
         NSLog(@"Upload failed: [%@]", task.error); 
         break; 
       } 
      } else { 
       NSLog(@"Upload failed: [%@]", task.error); 
      } 
     } 

     if (task.result) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       NSLog(@"Upload ok: [%@]", task.error); 
      }); 
     } 
     return nil; 
    }]; 

AppDelege.m

* *

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){ 
     [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]; 
    } 
    AWSCognitoCredentialsProvider *credentialsProvider = [AWSCognitoCredentialsProvider 
                  credentialsWithRegionType:AWSRegionxxxx 
                  identityPoolId:@"us-xxxx-1:xxxxxx-xxxx-xxxx-xxxxx-xxxxxxx"]; 

    AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 
                      credentialsProvider:credentialsProvider]; 

    [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration; 


    return YES; 
} 

**

Благодаря

+0

Вы обновили свою политику ведра? – RJiryes

+0

Нет, Я новичок в амазонке, что там нужно добавить? – user3428151

ответ

0

Попробуйте изменить политику ведро этого (заменить bucketName):

{ 
"Version": "2008-10-17", 
"Id": "policy", 
"Statement": [ 
    { 
     "Sid": "allow-public-read", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::bucketName/*" 
    }, 
    { 
     "Sid": "allow-public-put", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "*" 
     }, 
     "Action": "s3:PutObject", 
     "Resource": "arn:aws:s3:::bucketName/*" 
    } 
] 
} 

Это позволяет добавлять объекты/чтение из вашего ведра, вы должны прочитать AWS S3 Documentation, чтобы узнать, что именно вы хотите, чтобы ваша политика была, но на данный момент это должно сделать трюк.

+0

Не загружается, может быть, что-то еще? – user3428151

+0

Попробуйте напечатать ошибку – RJiryes

+0

ошибок. UploadRequest.key = "filename" в порядке? Я только что открыл ведро без каких-либо внутренних папок. Все хорошо? – user3428151

0

Я отказываюсь от использования AWS SDK. Я пробовал с AFAmazonS3Manager, и он работает хорошо.

AFAmazonS3Manager: Клиент AFNetworking для API Амазонки S3.

 Смежные вопросы

  • Нет связанных вопросов^_^