Не удается получить загрузки S3 для работы в Xcode 10.2 / Swift - PullRequest
0 голосов
/ 31 марта 2019

Я нахожусь в процессе создания приложения для iOS, и я застрял на загрузках S3 в течение нескольких дней. Я следил за документацией, представленной здесь:

https://aws -amplify.github.io / документы / ИОС / хранение .

Когда я нажимаю эту функцию, кажется, что все работает в XCode, и она не возвращает ошибок. Однако когда я смотрю в свое ведро S3, я вижу, что изображение никогда не загружалось. Вот моя функция загрузки (здесь я также ввел информацию о полномочиях):

Я думаю, что мой источник путаницы исходит от получения учетных данных от Cognito. Я чувствую, что мне нужны учетные данные Cognito для доступа к AWS Transfer Utility, и приведенный ниже код выглядит так, как будто он должен это делать?

@IBAction func uploadData() {

    let pool = AWSCognitoIdentityUserPool(forKey: "UserPool")
    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast2, identityPoolId: "us-east-2:XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX", identityProviderManager:pool)
    let serviceConfiguration = AWSServiceConfiguration(region: .USEast2, credentialsProvider: credentialsProvider)
    let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "XXXX", clientSecret: "XXXX", poolId: "us-east-XXXX")

    let tu = AWSS3TransferUtilityConfiguration()

    AWSS3TransferUtility.register(with: serviceConfiguration!, transferUtilityConfiguration: tu, forKey: "UserPool")

    let transferUtility:(AWSS3TransferUtility?) = AWSS3TransferUtility.s3TransferUtility(forKey: "UserPool")
    AWSServiceManager.default()?.defaultServiceConfiguration = serviceConfiguration


    let data = self.imageView?.image?.pngData() // Data to be uploaded

    let expression = AWSS3TransferUtilityUploadExpression()
    expression.progressBlock = {(task, progress) in
        DispatchQueue.main.async(execute: {
            // Do something e.g. Update a progress bar.
        })
    }

    var completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?
    completionHandler = { (task, error) -> Void in
        DispatchQueue.main.async(execute: {
            // Do something e.g. Alert a user for transfer completion.
            // On failed uploads, `error` contains the error object.
        })
    }

    transferUtility!.uploadData(data as! Data,
                               bucket: "mybucket-env",
                               key: "YourFileName",
                               contentType: "image/png",
                               expression: expression,
                               completionHandler: completionHandler).continueWith {
                                (task) -> AnyObject? in
                                if let error = task.error {
                                    print("Error: \(error.localizedDescription)")
                                }

                                if let _ = task.result {
                                    // Do something with uploadTask.
                                }
                                return nil;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...