簡體   English   中英

iOS - 同步上傳到AWS S3

[英]iOS – Upload to AWS S3 synchronously

所有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庫,談論過度工程......需要一段時間才能通過所有這些間接層來弄明白。

無論如何,在我return nil最后一個區塊中,你處理錯誤等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM