Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS–;同步上传至AWS S3_Ios_Amazon S3_Aws Sdk - Fatal编程技术网

iOS–;同步上传至AWS S3

iOS–;同步上传至AWS S3,ios,amazon-s3,aws-sdk,Ios,Amazon S3,Aws Sdk,所有aws sdk ios示例都使用AWSS3TransferManager异步上载数据 例如: 现在,这通常是好的,但由于其他原因,我的工作已经在NSOperation子类中,所以我想同步上传到S3以保持简单(否则,我需要实现一个异步NSOperation,这有很多样板文件…) 有人知道怎么做吗?如果有人好奇,我想: let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USE

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

例如:

现在,这通常是好的,但由于其他原因,我的工作已经在
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的
library,谈谈over engineering。。。我们花了一段时间才从这些间接的层次中找到答案


无论如何,在最后一个块中,我
返回nil
就是处理错误等的地方。

在浪费了很多时间之后,这实际上是我需要做的全部!非常简单的答案。