Загрузка изображения AWS S3 ведро в Swift - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь загрузить изображение в корзину S3 AWS, я использую следующий код.

 let credentialsProvider = AWSCognitoCredentialsProvider(regionType: CognitoIdentityUserPoolRegion, identityPoolId: CognitoIdentityUserPoolId)

        let configuration = AWSServiceConfiguration(region: CognitoIdentityUserPoolRegion, credentialsProvider: credentialsProvider)

AWSServiceManager.default (). DefaultServiceConfiguration = configuration

        let s3BucketName = "newBucket"
        let compressedImage = image.resizedImage(newSize: CGSize(width: 80, height: 80))
        let data: Data = compressedImage.pngData()!
        let remoteName = "cm_images/" + generateRandomStringWithLength(length: 20)+".jpg"
        print("REMOTE NAME : ",remoteName)

        let expression = AWSS3TransferUtilityUploadExpression()
        expression.progressBlock = { (task, progress) in
            DispatchQueue.main.async(execute: {
                // 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.
            })
        }

        let transferUtility = AWSS3TransferUtility.default()
        transferUtility.uploadData(data, bucket: s3BucketName, key: remoteName, contentType: "image/jpeg", expression: expression, completionHandler: completionHandler).continueWith { (task) -> Any? in
            if let error = task.error {
                print("Error : \(error.localizedDescription)")
            }

            if task.result != nil {
                let url = AWSS3.default().configuration.endpoint.url
                let publicURL = url?.appendingPathComponent(s3BucketName).appendingPathComponent(remoteName)
                if let absoluteString = publicURL?.absoluteString {
                    // Set image with URL
                    print("Image URL : ",absoluteString)
                }
            }

            return nil
        }

это не загрузка. сообщение об ошибке - Операция не может быть завершена. (com.amazon aws .AWSCognitoIdentityErrorDomain ошибка 8.)

Есть мысли о том, что я делаю неправильно?

...