iOS – 同步上传到 AWS S3

标签 ios amazon-s3 aws-sdk

所有 aws-sdk-ios 示例都使用 AWSS3TransferManager异步上传数据。

例如:https://github.com/awslabs/aws-sdk-ios-samples/blob/master/S3TransferManager-Sample/Swift/S3TransferManagerSampleSwift/UploadViewController.swift#L81

现在通常这很好,但由于其他原因我的工作已经在 NSOperation 子类中,所以我想同步上传到 S3 以保持简单(否则,我会需要实现一个异步的 NSOperation,并且有更多样板...)

有人知道怎么做吗?

最佳答案

如果有人好奇,我想通了:

    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1,
                                                            identityPoolId: AwsCognitoIdentityPoolId)
    let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1,
                                                credentialsProvider: credentialsProvider)
    AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration

    let S3Client = AWSS3.defaultS3()
    let putObjectRequest = AWSS3PutObjectRequest()
    putObjectRequest.bucket = AwsBucketName
    putObjectRequest.key = key
    putObjectRequest.body = logFilePathURL

    do {
        let fileAttributes = try self.fileManager.attributesOfItemAtPath(logFilePathURL.path!)
        let fileSizeNumber = fileAttributes[NSFileSize] as! NSNumber
        putObjectRequest.contentLength = NSNumber(longLong: fileSizeNumber.longLongValue)
    } catch _ as NSError {
        // TODO handle error
    }

    S3Client.putObject(putObjectRequest).continueWithBlock { (task: AWSTask) -> AnyObject? in
        return nil
    }.waitUntilFinished()

...是的。我无法在任何地方 找到示例,所以我不得不阅读源代码并找出答案。至于那个 aws-sdk-ios 库,谈论过度工程......花了一段时间才通过所有这些间接层弄清楚。

无论如何,在我返回 nil 的最后一个 block 中,您将在其中处理错误等。

关于iOS – 同步上传到 AWS S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35186402/

相关文章:

javascript - Amazon AWS SDK MediaConvert 不是构造函数

javascript - 为什么我的代码可以在标准 Node.js 文件中运行,而不能在 AWS Lambda 函数中运行?

ios - 如何在不打开 Facebook 应用程序的情况下登录 Facebook?

ios - 如何将数据传回堆栈中的 View Controller ?

iphone - 是否可以在没有 Storyboard的情况下在 Interface Builder 中创建原型(prototype)单元?

iphone - 如何为 UITableViewCell 的 ImageView 设置固定大小?

amazon-s3 - 警告 - AWS 凭证在 Google Play 控制台上公开

amazon-s3 - 尝试在 AWS Lambda 函数的无服务器框架中创建多个 s3 存储桶时,Yaml 文件中出现错误

amazon-web-services - 尝试在另一个 AWS 帐户的 S3 存储桶中备份 Codecommit 存储库

amazon-web-services - 无法在 Unity3d 中创建 AmazonGameLiftClient