2017-02-23 53 views
0

出于某种原因,上传到S3确实无法正常工作,而我却能够使下载功能正常工作。XCode Swift AWS S3上传不起作用

这是我的上载的代码:

@IBAction FUNC uploadFile(_发件人:的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: "https://stackoverflow.com/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”)错误:错误域= com.amazonaws.AWSS3ErrorDomain代码= 0“(null)”UserInfo = {HostId = KAsbvIqiY67dr/64f3uvZPB1Lr5Vj7eNNV198DLai/RG/tA + v3To8CBbnbFSM00V2COZnzebx/M =,Message =请求正文意外终止,Code = IncompleteBody,RequestId = A95236E53A1B8FE8}

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

回答

0

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

+0

是的我在Cognito和S3存储桶检查权限,以确保他们有读/写...将继续搜索,但thx评论 – user3424472

0

我终于想通这个问题了:)

事实证明,我已经安装了AWS框架的旧版本,因为我是遵循老的教程上手...,并加载使用的CocoaPods指定框架在IOS 8.0的podfile中,但我现在是IOS 10.0!所以将podfile更改为版本10.0可以解决问题。

我结束了使用的CocoaPods和10.0正确podfile重新安装AWS框架......但我觉得有一种方法只更新吊舱,但我会考虑以后

希望这有助于任何人谁拥有这个问题也:)