swift - XCode Swift AWS S3 上传不工作

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

由于某种原因,上传到 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: "/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“(空)”UserInfo={HostId=KAsbvIqiY67dr/64f3uvZPB1Lr5Vj7eNNV198DLai/RG/tA+v3To8CBbnbFSM00V2COZnzebx/M=,消息=请求正文意外终止,Code=IncompleteBody, RequestId=A95236E53A1B8FE8}

大家有什么想法吗?我找不到任何线索来说明为什么使用 Cognito 和 S3 下载可以工作,但上传却不起作用......

最佳答案

看起来更像是一个授权错误。检查您是否具有此特定存储桶的写入权限,并检查您提供的路径是否正确,如果不匹配则无法工作。

关于swift - XCode Swift AWS S3 上传不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42408359/

相关文章:

swift - 寻找一种更通用的方法来使 UITableViewCells 出队

UITableView 文本标签对齐方式

ios - 使用核心数据时更新 Spotlight 搜索索引?

iphone - 令人沮丧的 iPhone 构建错误

swift - 如何使用 AWSS3TransferUtility 将带有用户元数据的音频文件上传到 S3

amazon-web-services - AWS ELB -> 带有自签名证书的 HTTPS 后端服务器

javascript - AWS S3 使用预签名 URL 验证用户访问?

swift - Swift 中的粗体动态类型

ios - 当调用 didFinishNavigation 时,WKWebView 没有完成加载 - WKWebView 中的 Bug?

Swift 在 Storyboard 中设置 UIButton setBorderColor