【问题标题】:XCode Swift AWS S3 Upload Not WorkingXCode Swift AWS S3 上传不工作
【发布时间】:2017-02-23 06:15:57
【问题描述】:

由于某种原因,上传到 S3 不起作用,而我能够让下载功能正常工作。

这是我的上传代码:

@IBAction func uploadFile(_ sender: UIButton) {

    let CognitoRegionType = AWSRegionType.USWest2  // e.g. AWSRegionType.USEast1
    let CognitoIdentityPoolId = "us-west-2:3c00122a-866c-4ce4-9dd3-ee23c16e58f3"

    let DefaultServiceRegionType = AWSRegionType.USWest1 // e.g. AWSRegionType.USEast1
    let S3BucketName = "snappcastphotos"


    let credentialsProvider = AWSCognitoCredentialsProvider(regionType:CognitoRegionType, identityPoolId: CognitoIdentityPoolId)
    let configuration = AWSServiceConfiguration(region: DefaultServiceRegionType , credentialsProvider:credentialsProvider)
    AWSServiceManager.default().defaultServiceConfiguration = configuration


    let uploadRequest = AWSS3TransferManagerUploadRequest()
    uploadRequest?.bucket = S3BucketName
    uploadRequest?.key = "bingo"
    uploadRequest?.body = URL(fileURLWithPath: "/users/rhom/desktop/test.rtf")

    let transferManager = AWSS3TransferManager.default()
    transferManager.upload(uploadRequest!).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in

        if let error = task.error as? NSError {
            if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) {
                switch code {
                case .cancelled, .paused:
                    break
                default:
                    print("Error uploading: \(uploadRequest?.key) Error: \(error)")
                }
            } else {
                print("Error uploading: \(uploadRequest?.key) Error: \(error)")
            }
            return nil
        }

        let uploadOutput = task.result
        print("Upload complete for: \(uploadRequest?.key)")
        return nil
    })
}

并且此代码产生以下错误/输出:

上传错误:可选(“bingo”)错误:错误 Domain=com.amazonaws.AWSS3ErrorDomain Code=0 "(null)" UserInfo={HostId=KAsbvIqiY67dr/64f3uvZPB1Lr5Vj7eNNV198DLai/RG/tA+v3To8CBbnbFSM00V2COZnzebx/M=, Message=请求正文意外终止,Code=IncompleteBody, RequestId=A95236E53A1B8FE8}

有人有什么想法吗?我找不到任何关于为什么使用 Cognito 和 S3 进行下载但上传不起作用的任何线索....

【问题讨论】:

    标签: swift xcode amazon-web-services amazon-s3 upload


    【解决方案1】:

    它看起来更像是一个授权错误。检查您是否具有此特定存储桶的写入权限,并检查您提供的路径是否正确,就好像存在不匹配一样它不起作用。

    【讨论】:

    • 是的,我检查了 Cognito 和 S3 存储桶中的权限,以确保它们具有读/写权限...将继续搜索,但感谢评论
    【解决方案2】:

    我终于解决了这个问题:)

    事实证明,我已经安装了旧版本的 AWS 框架,因为我正在按照旧教程开始学习......并且已经使用 Cocoapods 加载了框架,该框架在 IOS 8.0 的 podfile 中指定,但我现在是 IOS 10.0! !!!因此将 podfile 更改为 10.0 版即可解决问题。

    我最终使用 Cocoapods 和正确的 10.0 的 podfile 重新安装了 AWS 框架......但我认为有一种方法可以更新 pod,但我稍后会研究

    希望这对也有这个问题的人有帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      相关资源
      最近更新 更多