所有aws示例都使用AWSS3TransferManager异步上传数据。
现在,这通常是好的,但是由于其他原因,我的工作已经在NSOperation子类中了,所以我希望同步上传到S3以保持简单(否则,我需要实现一个异步NSOperation,并且它有更多的样板.)
有人知道怎么做吗?
发布于 2016-02-03 21:36:41
如果有人好奇,我想出来了:
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()...yeah。我无法在任何地方找到一个例子,所以我不得不阅读源代码并找出答案。至于aws-sdk-ios图书馆,谈谈过度工程.花了一段时间才从所有这些间接的层次中找出答案。
无论如何,在最后一个块中,我return nil是处理错误的地方,等等。
https://stackoverflow.com/questions/35186402
复制相似问题